Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1033 commits
Select commit Hold shift + click to select a range
f011444
Fix logic for Onboard view controller
ewpatton Apr 12, 2023
aef5b3e
Fix logic bug in IP address detection
ewpatton Apr 12, 2023
265f939
Patch ZXCapture to work with iPadOS 16
ewpatton Mar 22, 2023
42d12d7
Introducing The ChatBot Component
jisqyv Apr 21, 2023
a94497f
Implement the ImageBot component
ewpatton May 2, 2023
d5d5d76
Implement ChatBot and ImageBot for iOS
ewpatton Jun 13, 2023
4869003
Dispatch error to screen if not handled by spreadsheet
ewpatton Jun 5, 2023
cce12c6
Add MediaUtil support for file asset URLs in APKs
ewpatton Jun 14, 2023
9a9ec9c
Add PHOLO and math block implementations from nb191
ewpatton Jun 17, 2023
c2103e7
Bump iOS version number to 2.64.2 (12)
ewpatton Jun 16, 2023
32a86b1
Merge branch 'ucr'
jisqyv Jun 18, 2023
44523e0
Update Android Companion Version to 2.67
jisqyv Jun 18, 2023
719e724
Rebuild documentation
jisqyv Jun 18, 2023
efa3867
Ensure SpeechRecognition session valid after TextToSpeech or other audio
ewpatton Jun 20, 2023
fa84526
Add missing provider/model fields in ChatBot request
ewpatton Jun 20, 2023
2c8ae73
Implement a Stop method for TextToSpeech
ewpatton Jun 21, 2023
adddc91
Only check for helper key for defined properties
ewpatton Jun 30, 2023
ec790ef
Component spelling correction #2910 (#2922)
SudarshanSirsi Jul 10, 2023
bf2372f
Add ChatBot model support for iOS and Android (#2927)
lexue28 Jul 27, 2023
9fe1b0a
Fix race condition in GyroscopeSensor
ewpatton Aug 4, 2023
e021f6f
Fix the BlocksToolkit bug
arinmodi Jun 29, 2023
c34af5b
Obfuscate designer properties if they are ApiKeys
ewpatton Aug 3, 2023
b721409
Allow setting ApiKey in design view for ChatBot, ImageBot
ewpatton Aug 8, 2023
914a0e2
Correct spelling error of the documentation of BluetoothClient (#2939)
gordonlu310-old Aug 11, 2023
3a6b7d3
Make File use own work queue and clean up unit test performance
ewpatton Aug 9, 2023
461edc5
Delete .gitignore
barreeeiroo Aug 5, 2023
118fc56
Merge branch 'master' into ucr
ewpatton Aug 11, 2023
6f5324d
Bump iOS version number to 2.64.3 (5)
ewpatton Aug 11, 2023
1e52a91
Implement MoveToPoint for iOS (#2934)
axz0315 Aug 11, 2023
509e0af
Redirect from http to https
jisqyv Aug 9, 2023
2ff42ef
[GSoC] Compiler Refactor (#2296)
barreeeiroo Aug 16, 2023
9bc6636
Fix resource lookup for country and language codes in TTS
ewpatton Apr 24, 2023
20715b5
Merge branch 'master' into ucr
ewpatton Aug 17, 2023
bb0fd2c
Add GetEntries method to TinyDB (#2841)
kkashi01 Aug 18, 2023
8889d66
Remove deprecated cache code (#2807)
adirn26 Aug 18, 2023
d46d968
Implement type coercion for writing Spreadsheet values (#2945)
ewpatton Aug 18, 2023
87b86f9
Remove designer properties if super overridden sans annotation
ewpatton Aug 18, 2023
b78b24e
Implement AnomalyDetection and Regression components (#2827)
HanyaElhashemy Aug 19, 2023
e3b6d28
Fix custom fonts do not load correctly on Android < 10 (#2887)
patryk84a Aug 21, 2023
3085f45
Fix procedure drawer internal error due to procedures in backpack
ewpatton Aug 10, 2023
ddc206b
Backport property panel improvements from Punya/Alexa (#2886)
ewpatton Aug 21, 2023
5dd8b29
Add add/delete sheet operations to Spreadsheet (#2931)
lexue28 Aug 21, 2023
1d562ff
Handle unspecified properties when loading old extensions
ewpatton Aug 22, 2023
5327631
UI Binder refactor (#2832)
SusanRatiLane Aug 29, 2023
168d579
Update for Android SDK 33 (#2949)
ewpatton Aug 29, 2023
7ce9570
Make ImageBot use SSL factory (#2953)
ewpatton Aug 29, 2023
8b45e7e
Fix screen orientation flip-flop when screen opens (#2954)
ewpatton Aug 29, 2023
f1192b4
Fix DefaultFileScope documentation in property help widget (#2959)
ewpatton Aug 29, 2023
44e3a12
Allow for all regression values in LOBF calculation (#2960)
ewpatton Aug 29, 2023
851a3e8
Invalidate chart when grid, legend properties change (#2965)
ewpatton Aug 29, 2023
a54c0cf
Merge branch 'ucr'
jisqyv Aug 29, 2023
8c3551a
Update Companion Version to 2.68
jisqyv Aug 29, 2023
a14551e
Move Resources back to using static map
ewpatton Aug 31, 2023
f89b55a
Make AssetBox always visible
SusanRatiLane Aug 30, 2023
c1e0725
Fix Windows builds
ewpatton Aug 30, 2023
65fd784
Remove buggy build caching code (#2971)
jisqyv Aug 31, 2023
a1597f1
Update bug_report.md
SusanRatiLane Sep 6, 2023
d36e923
Fix order of created/modified date labels
ewpatton Sep 6, 2023
a4f5204
Restore ability to export multiple selected projects
SusanRatiLane Sep 6, 2023
a699e8c
Correct text on move projects wizard
SusanRatiLane Sep 11, 2023
aa3bf82
Allow loading media from private directory without file: scheme
ewpatton Sep 13, 2023
d19b0ac
Restore scrolling on project explorer view
SusanRatiLane Sep 8, 2023
a12e311
Refactor build server to use factory pattern
ewpatton Sep 8, 2023
2811813
Keep extension classes in extension package when proguarding
ewpatton Sep 26, 2023
df3c387
Download phantomJS during build on github action
josmas Oct 8, 2023
2ace548
Fix Error Handling in ChatBot and ImageBot
jisqyv Sep 8, 2023
e3f3cfd
ListData and Font details features (GSoC 2023) (#2911)
Codnelle Oct 11, 2023
6e62958
svg logo
jennet-zamanova Oct 11, 2023
d616b16
Update dictionaries.html
jennet-zamanova Oct 11, 2023
001fa91
Fix procedure names not set in backpack
ewpatton Sep 18, 2023
73d1e23
Provide error message regarding extensions for the gallery (#2864)
arduino-monkey Oct 11, 2023
8de910e
Fix alist to dict bug with FString keys
ewpatton Sep 3, 2023
760770d
Switch to gviz export API for Spreadsheet
ewpatton Sep 22, 2023
f684220
Fix USB connections not loading extensions (#2997)
ewpatton Oct 11, 2023
566a1e8
Make java_dev_appserver.sh command single-line in README.md
gordonlu310-old Oct 7, 2023
cd2f881
Fix misaligned buildserver stat reports
ewpatton Sep 16, 2023
345c2f7
Load and compare project properties in tests
ewpatton Sep 26, 2023
7cde9da
Only send Strict Transport Security Header using https
jisqyv Sep 1, 2023
ab109ff
Restore substitution for spaces in project name (#2991)
SusanRatiLane Oct 11, 2023
8c3afbc
Implement ResponseTextEncoding property for Web component
wanddy May 5, 2016
02a2d5e
Fix regression in use of ListView.Elements on iOS
ewpatton Oct 12, 2023
824c427
Inline BluetoothReflection functionality
ewpatton Mar 15, 2023
bfcc156
Add missing coerce-to-number-list code path in iOS
ewpatton Oct 13, 2023
96ff61f
Add "RemoveItemAtIndex" block to ListView (#2789)
devarsh-mavani-19 Oct 16, 2023
17b754f
Implement a Project Properties Dialog (#2946)
arinmodi Oct 16, 2023
058782e
Fix lack of lifecycle management in TextToSpeech on iOS
ewpatton Oct 12, 2023
a6dcc1a
feat(ui): Allow filtering components in source structure
barreeeiroo Jun 4, 2023
87fb6ad
Remove unused logic and feature flag check
SusanRatiLane Oct 17, 2023
6424741
Use darker gray for iOS PasswordTextbox hint color
ewpatton Oct 20, 2023
402b2d5
Add more missing methods to iOS ListView
ewpatton Oct 15, 2023
0b42cb2
Filter out deprecated methods, events and properties for typeblocks (…
josmas Oct 23, 2023
0c69abc
Add Send To Gallery button to designer toolbar template
SusanRatiLane Oct 18, 2023
47310a0
Fix Tree Structure (#3038)
barreeeiroo Oct 24, 2023
397061c
Make TTS stop when switching screens in companion
ewpatton Oct 25, 2023
0ae5cf4
Fix scrollbar and HTML visibility in Project Properties Dialog
ewpatton Oct 25, 2023
f15f042
Fix incorrect information in TextBox component docs
ewpatton Oct 24, 2023
6bc7b61
Fix iOS vs Android date support mismatch in Clock
ewpatton Nov 2, 2023
d2f346c
Fix crash of static field reuse in tests
ewpatton Nov 9, 2023
35f6a80
Implement DefaultFileScope enum for iOS (#2943)
axz0315 Nov 13, 2023
adae879
Fix font size and encoding issues with iOS Label
ewpatton Nov 11, 2023
d137dc4
Switch iOS ListView to word wrap cells by default
ewpatton Nov 9, 2023
ba119f3
Fix iOS map zoom initialization
ewpatton Oct 12, 2023
4754b56
Fix LineString, Polygon, Rectangle, and Circle not appearing on iOS Map
ewpatton Oct 12, 2023
d413db6
Ensure Player state resets upon completion
ewpatton Oct 20, 2023
f4f5932
Only respond to messages if intended for the WebViewer
ewpatton Nov 3, 2023
765ea24
Fix off-by-one error in ListView
ewpatton Nov 7, 2023
66229a7
Fix buttons not taking a translucent background color (#3027)
ewpatton Nov 21, 2023
e7c5f52
Make the definition of DEFAULT_THEME match project.properties
jisqyv Oct 27, 2023
5c36df2
Fix crashes reported by Google
jisqyv Nov 20, 2023
bcb4c0c
Merge branch 'ucr'
jisqyv Nov 22, 2023
953886c
Update Companion to version 2.69
jisqyv Nov 22, 2023
c2ddc80
Upgrade formally to DeviceDefault theme as default
ewpatton Nov 27, 2023
eb54713
Update srcCompVersion in upgradeFormProperties
ewpatton Nov 27, 2023
0594eb4
Fix some thrown exceptions in replmgr
ewpatton Nov 28, 2023
1ca0201
Fix some iOS layout issues (#3015)
daki7711 Dec 5, 2023
02069ac
Implement Google security for iOS
ewpatton Dec 4, 2023
6850db2
Implement Spreadsheet component for iOS
lexue28 Nov 27, 2023
e1f26fa
Handle older rendezvous server behavior on iOS
ewpatton Oct 26, 2023
73ecbb8
Use UIImageView for background image
viktab Oct 17, 2019
3c4ca41
Fix use of localhost URLs in iOS WebViewer
ewpatton Dec 6, 2023
9581621
Implement missing Webview features on iOS (GSoC 2023)
Codnelle Nov 21, 2023
ce834cb
Bump iOS version number to 2.64.4 (13)
ewpatton Dec 6, 2023
107fd0d
Fix crash due to static MakeInstantFromMillis
ewpatton Nov 3, 2023
0edae78
Ukrainian Translation (#3069)
SusanRatiLane Dec 9, 2023
90a6aaf
Do not pass null list to blocks in CloudDB.GetValue
ewpatton Dec 18, 2023
4de7a35
Bump iOS version number to 2.64.5 (1)
ewpatton Dec 18, 2023
391f321
Update README to add git submodule instruction (#3061)
amitsaha Jan 11, 2024
aad697b
Fix triggering of context menu on open
ewpatton Jan 4, 2024
41782bd
Fix ListView selection removal bug (#3087)
timfoden Jan 11, 2024
4f74c12
Use correct units in VideoPlayer for iOS
ewpatton Dec 20, 2023
e9fedf4
Implement background audio support for iOS Player
ewpatton Dec 19, 2023
3ae8e8f
Fix loop and volume block logic in iOS Player
ewpatton Dec 20, 2023
0621f01
Add test cases for TinyDB component (#2466)
preetvadaliya Jan 11, 2024
be4baef
Update App Engine to be compatible with Java 11
ewpatton Oct 10, 2023
db370f3
Implement Promises for Ode (#3080)
ewpatton Jan 18, 2024
5501f53
Allow renaming template projects on name conflict
ewpatton Jan 11, 2024
dc38a3a
Chinese Traditional Translation Update (#3098)
SusanRatiLane Jan 19, 2024
1d8149a
Make sure the buildserver includes extensions
jisqyv Jan 20, 2024
d89e864
Increase the stack size when invoking d8
ewpatton Jan 22, 2024
459b19e
Address some issues in new promises code (#3105)
ewpatton Jan 26, 2024
7ed064c
Add accessibility link and update copyright year (#3106)
ewpatton Jan 28, 2024
f977ce3
Merge remote-tracking branch 'github/master' into ucr
ewpatton Jan 28, 2024
2f42cef
Fix infinite speak() loop
XomaDev Jan 22, 2024
d9e7b15
Fix iOS form scrolling (#3096)
daki7711 Feb 7, 2024
86ca5b1
Deprecate the Twitter component (#3094)
gordonlu310-old Feb 7, 2024
0b0bf9d
Make main class dex list more robust for d8
ewpatton Feb 6, 2024
738b6b3
Add a Japanese translation (#3116)
SusanRatiLane Feb 9, 2024
5272d6f
Add documentation for special regex characters in 'replace all' block…
JustinFrost47 Feb 9, 2024
79c49d3
Add DataFile component description in documentation (#3095)
gordonlu310-old Feb 9, 2024
6368e8b
Update Spanish translation (#3117)
SusanRatiLane Feb 9, 2024
108f4eb
Fixed FontSize bugs of CheckBox and Switch
gordonlu310-old Feb 7, 2024
8459666
Updated copyright years
gordonlu310-old Feb 7, 2024
a7cd92f
Allow sharing files from app private directory (#2374)
arjuninv Feb 10, 2024
6dd1a1f
Implement new blocks for TextBox and related (#3093)
gordonlu310-old Feb 10, 2024
2712656
Use border box sizing for MockPasswordTextBox
ewpatton Feb 9, 2024
656a52c
Handle quoted-strings in Content-Type charset parameter
ewpatton Feb 6, 2024
e05e5cd
Implement Progress Components for Android (#2937)
barreeeiroo Feb 11, 2024
e1e9e78
Translate property help widget text (#3070)
SusanRatiLane Feb 13, 2024
e6fbad3
Remove duplicated zh_TW translation file and generator code
ewpatton Feb 9, 2024
e70a0b8
Implement PR #3093 for iOS
ewpatton Feb 10, 2024
d03d37f
Fix project properties dialog not accessible in non-English languages
ewpatton Feb 14, 2024
66d8de2
Fix TextBoxBase.TextChanged() issue in previous PR (#3121)
gordonlu310-old Feb 14, 2024
7b374bf
new project wizard added (#3032)
jennet-zamanova Feb 15, 2024
2e57605
Coerce NSString to int when applicable in YAIL
ewpatton Feb 16, 2024
04ad9e4
Correct a small documentation error and rebuild
ewpatton Feb 19, 2024
29676f2
Disable broken Upload File option in Toolkit editor
ewpatton Feb 16, 2024
d41c324
Implement Trendline component for Charts (#3085)
ewpatton Feb 19, 2024
9cfc5fc
Merge branch 'ucr'
jisqyv Feb 19, 2024
15fb754
Update Companion Version to 2.70
jisqyv Feb 19, 2024
cee7394
Fix lack of translation on 'add items to list' block
ewpatton Mar 7, 2024
59bde42
Fix errors in event params in non-English languages
ewpatton Mar 8, 2024
167baca
Fix unrecognized character in Ukrainian
SusanRatiLane Mar 8, 2024
9c94514
Add server-side config for enabling some extensions for iOS
ewpatton Mar 10, 2024
25c85c6
add keydown events
jennet-zamanova Mar 7, 2024
1d89443
Improve ImageSprite rotation and collision detection (#2496)
Himanshu2107 Mar 20, 2024
b4785e5
Update Chinese Simplified translation March 2024 (#3137)
SusanRatiLane Mar 20, 2024
a1f53cf
Update Ya.css for standardization of the icon sizes (#3144)
Venkata-Sai-Vishwanath-robo Mar 21, 2024
0c18ce5
Update login.jsp to handle locale (#2262)
fsyzty-cmd Mar 21, 2024
8c66c50
Fix for ListView.swift issue #3153 (#3154)
patryk84a Apr 5, 2024
11a802d
Make Speech Recognizer sensitive to user Locale
ewpatton Apr 5, 2024
bf3318d
Make Clock methods sensitive to user locale
ewpatton Apr 9, 2024
12f8dec
Address internal error in localhost when adding ChatBot
ewpatton Nov 13, 2023
776f487
Implement error logic for remaining components
ewpatton Mar 21, 2024
9cd51d0
Address 404 error due to change in Navigation URL structure
ewpatton Apr 20, 2024
529ebc4
Make ant extensions work with Java 11
ewpatton Apr 5, 2024
f86c646
Implement new Apple privacy framework for iOS apps
ewpatton Apr 5, 2024
05551df
Fix regression in designer properties activating permissions
ewpatton Feb 24, 2024
150c593
Implement collapsable dropdwon palette categories
jennet-zamanova Mar 31, 2024
fc8907e
Deprecate the Edit Image block without a mask
jisqyv May 24, 2024
fd914ed
Fix buildserver long extension error in Windows Java 11
ewpatton Mar 8, 2024
2d4d28b
Further Windows improvements
ewpatton Mar 12, 2024
ef1beef
Only copy .dex files to the bundle dex dir
ewpatton Mar 13, 2024
ad4728a
CollapsablePanel Toolkit fix (#3180)
SusanRatiLane Jun 4, 2024
d1b25e3
Fix disappearing extensions category in collapsable palette (#3189)
SusanRatiLane Jun 24, 2024
e092de4
Merge branch 'ucr'
jisqyv Jul 4, 2024
07527f7
User-selectable modern ui style (#3079)
SusanRatiLane Jul 4, 2024
aa2f1dd
Feature/chatbot vision
catherinepaopao Jul 4, 2024
9333973
Support moving static ode to another server
jisqyv Jul 4, 2024
d2e9aa4
Call FileUploadWizard.show() (#3178)
jisqyv Jul 4, 2024
d1a5184
Update Companion Version to 2.71
jisqyv Jul 5, 2024
0d90875
Fix Mark Origin (#3195)
jisqyv Jul 9, 2024
32b7850
Make project list scrollable in neo (#3196)
SusanRatiLane Jul 10, 2024
2eb3105
Allow style switch in read only, fix Neo buttons
SusanRatiLane Jul 11, 2024
55578b8
Fix Neo box css pushing Assets box below fold (#3199)
SusanRatiLane Jul 15, 2024
f453f2c
Fix ImageSprite MarkOrigin property issues
ewpatton Jul 15, 2024
04af9e4
Add Reset button to MarkOrigin wizard
ewpatton Jul 15, 2024
50ee199
Set designer sidebars to fixed width in Neo (#3205)
SusanRatiLane Jul 18, 2024
9dfe82c
Add proper errors for unsupported iOS texting features
ewpatton Apr 23, 2024
682a708
Make iOS WebViewer fill parent in compiled apps
ewpatton Apr 9, 2024
425d7e6
Delay CDN warning message by 2 seconds
ewpatton Jul 22, 2024
80ef66d
Correct resizableActivity to resizeableActivity (#3192)
jewelshkjony Jul 28, 2024
e03c8b1
Fix incorrect short-circuit of permission constraint handling
ewpatton Jul 24, 2024
d3248dd
Do not open Picker if BeforePicking blocks need to stop (BluetoothCli…
ewpatton Jul 26, 2024
e783c81
Fix DismissProgressDialog dismissing other dialogs
ewpatton Jul 30, 2024
37c289e
Fix bug where ListPicker won't open without a BeforePicking event
ewpatton Aug 15, 2024
747ed1e
Update to target Android SDK 34 (#3191)
ewpatton Aug 16, 2024
8ffa360
Merge branch 'ucr'
jisqyv Aug 17, 2024
62cef9a
Setup Companion Version 2.72 (for nb198)
jisqyv Aug 17, 2024
cb930de
Remove extra comma in json example (#3226)
SusanRatiLane Aug 23, 2024
898d346
Move pull request template
SusanRatiLane Aug 29, 2024
937f301
Fix accessibility footer in Neo
SusanRatiLane Aug 29, 2024
bd44cf1
Fix oversized folders in Neo project explorer
SusanRatiLane Aug 29, 2024
556d8f7
Define the Chat Bot Proxy in AppInventorFeatures
jisqyv Sep 4, 2024
d8f8828
Change ChatBot System property to use large text area
ewpatton Sep 9, 2024
96386bb
Fix typos in logging messages
logresearch Jul 24, 2024
cc6d809
Make the iOS bundle identifier customizable by downstream builders
ewpatton Sep 16, 2024
b976d0c
Fix map tests for SDK 34 update
ewpatton Aug 19, 2024
c202964
Fix hint text not showing in MockTextBoxBase
ewpatton Sep 10, 2024
559fbe1
Implement draggable property and component help popups (#3227)
SusanRatiLane Sep 18, 2024
1062fa1
Update Protocol Buffers to version 4.28.1
jisqyv Sep 17, 2024
60525f4
Update Java Runtime to Java 17
jisqyv Sep 13, 2024
63e3f29
Force use of UTF-8 encoding for BlocklyTranslationGenerator
ewpatton Sep 18, 2024
2879974
First working version of the personal image classifier extension
data1013 Nov 19, 2018
48193f7
update pic extension with new look extension updates
data1013 Jan 24, 2019
93a3247
updating personal image classifier extension to work with different t…
data1013 Jan 25, 2019
01f5aff
Add the GetModelLabels function
jisqyv Feb 25, 2021
f53d818
Crop and scale input images
ewpatton Feb 25, 2021
d75a9c0
Clean up warnings
ewpatton Mar 12, 2021
181a19b
Reorganize top-level variables at top of file
ewpatton Mar 12, 2021
9d4bbdf
Mirror front-facing camera video
ewpatton Mar 12, 2021
0ff20b6
Implement activity lifecycle support
ewpatton Mar 12, 2021
9ea2c7b
Obtain labels when model initializes
ewpatton Mar 12, 2021
a87602b
Report results using dictionaries
ewpatton Mar 12, 2021
d38b33e
Implement continuous video classification
ewpatton Mar 12, 2021
f1a6ede
Allow arbitrary sized WebViewer
ewpatton Mar 12, 2021
8ff2964
Implement MinimumInterval property
ewpatton Mar 12, 2021
4bab2e7
Bump version number for release
ewpatton Mar 15, 2021
692fec9
add heigth and width to image for picture classification
josmas Mar 2, 2026
6b530fb
add mandatory categories to properties
josmas Mar 2, 2026
e142982
Merge branch 'extension/personal-image-classifier' into merge/mastero…
josmas Mar 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Always use linefeed for some test files
**/tests/assets/**/*.txt text eol=lf
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Please check off the part of the system that is affected by the bug.

- [ ] Designer
- [ ] Blocks editor
- [ ] Projects Explorer
- [ ] Companion
- [ ] Compiled apps
- [ ] Buildserver
Expand Down
10 changes: 9 additions & 1 deletion .github/workflows/ant.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,17 @@ jobs:
with:
java-version: 8
- name: 'Checkout submodules'
uses: textbook/git-checkout-submodule-action@master
run: git submodule update --init --recursive
- name: 'Install 32-bit dependencies'
run: sudo apt-get install -y libc6-i386 lib32z1 lib32stdc++6
- name: 'Download phantomJS'
run: |
mkdir /tmp/phantomJS
wget -P /tmp/phantomJS/ https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
- name: 'Untar and add to PATH'
run: |
tar -xf /tmp/phantomJS/phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /tmp/phantomJS/
echo "/tmp/phantomJS/phantomjs-2.1.1-linux-x86_64/bin" >> $GITHUB_PATH
- name: 'Make Auth Key'
run: ant MakeAuthKey
working-directory: appinventor
Expand Down
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@
[submodule "appinventor/lib/closure-library"]
path = appinventor/lib/closure-library
url = https://github.com/mit-cml/closure-library.git
[submodule "appinventor/components-ios/SchemeKit/picrin"]
path = appinventor/schemekit/src/picrin
url = https://github.com/mit-cml/picrin.git
52 changes: 52 additions & 0 deletions README.ios.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# MIT App Inventor for iOS

## Prerequisites (Mac OS X)

* Xcode 14 or higher
* macOS 12 or higher

(optional) To automatically install the companion app on a connected, authorized iOS device, install ideviceinstaller via Homebrew:

```
brew uninstall ideviceinstaller
brew uninstall libimobiledevice
brew install --HEAD libimobiledevice
brew link --overwrite libimobiledevice
brew install --HEAD ideviceinstaller
brew link --overwrite ideviceinstaller
sudo chmod -R 777 /var/db/lockdown/
```

## Building

Build iOS:

```shell
ant ios
```

To build components and reinstall the companion:

```shell
ant ioscomps
```

To build only the Android version of the companion (MIT App Inventor open source):

```shell
ant android
```

To build the webapp for Google App Engine:

```shell
ant webapp
```

## Testing

To run tests:

```shell
ant iostests
```
113 changes: 102 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ to operate their own App Inventor instance and/or contribute to the project.
This code is tested and known to work with Java 8.

## Contributors

The best way to go about integrating changes in App Inventor is to start a conversation in the [Open Source forum](https://community.appinventor.mit.edu/c/open-source-development/10) about whatever you intend to change or add.

We use ***very brief and informal*** design documents with descriptions of the proposed changes and screenshots of how the functionality would look like and behave, in order to gather as much feedback from the community, as early as possible. We generally use shared Google docs for this (with permissions to add comments), but any format that is accessible from a web browser (and allows comments) would do.
Expand All @@ -23,7 +24,7 @@ If you have skipped this step and have gone ahead and made your changes already,

Check out our open source [site](http://appinventor.mit.edu/appinventor-sources/) to find a lot more information about the project and how to contribute to it.

## Setup instructions (Vagrant)
## Setup Instructions (Vagrant)

The easiest way to get a development environment up and running is to use the provided Vagrantfile. Install [Vagrant](https://vagrantup.com) and open a terminal in the root directory of this repository. Run the following commands

Expand All @@ -38,7 +39,15 @@ It may take a few minutes for Vagrant to initialize as it will pull down a virtu
vagrant ssh
```

This should open up a terminal within the virtual machine in the directory `/vagrant/appinventor`. This directory is the same as the `appinventor` directory in this repository, shared between your host machine and the virtual machine. Any changes made on one side will be visible in the other. This allows you to edit files on your host machine with your preferred editor, while keeping the build environment relegated to the virtual machine. To build App Inventor, you may now run:
This should open up a terminal within the virtual machine in the directory `/vagrant/appinventor`. This directory is the same as the `appinventor` directory in this repository, shared between your host machine and the virtual machine. Any changes made on one side will be visible in the other. This allows you to edit files on your host machine with your preferred editor, while keeping the build environment relegated to the virtual machine.

Before you can build App Inventor, you will need to also obtain the dependencies as described [below](#checkout-dependencies) using `git submodule` command:

```bash
git submodule update --init
```

Now, you are ready to build App Inventor, you may now run:

```bash
ant
Expand All @@ -58,11 +67,37 @@ Note 2: If it seems like none of the dependencies are installed in the VM, run `

For better performance, consider using the manual instructions.

## Setup instructions (manual)
## Setup Instructions (iOS Support)

Building MIT App Inventor Companion for iOS requires an Apple
Macintosh computer running macOS 12 or later with Xcode 14 or later
installed. While earlier versions may work we provide no support for
building on versions below the ones stated. To install on a device,
you **must** have a valid Apple Developer account license and have
added the relevant mobile provisioning profiles from the Developer
portal to your Xcode organizer (see Apple's website on instructions on
how to do this).

To build the MIT App Inventor companion, you will need to create a
file called AICompanionApp.xcconfig in the components-ios directory
that sets your development team. The easiest way to do this is to copy
the AICompanionApp.xcconfig.sample file and edit it. Alternatively,
create a file with the following line:

```conf
DEVELOPMENT_TEAM = ID
```

where ID is the development team ID shown in the Apple Developer
Portal. This ID is unique to your developer account (individual or
organization).

## Setup Instructions (Manual)

This is a quick guide to get started with the sources. More detailed instructions can be found [here](https://docs.google.com/document/pub?id=1Xc9yt02x3BRoq5m1PJHBr81OOv69rEBy8LVG_84j9jc), a slide show can be seen [here](http://josmas.github.io/contributingToAppInventor2/#/), and all the [documentation](http://appinventor.mit.edu/appinventor-sources/#documentation) for the project is available in our [site](http://appinventor.mit.edu/appinventor-sources/).

### Dependencies

You will need a full Java JDK (version 8, OpenJDK preferred; JRE is not enough) and Python to compile and run the servers.

You will also need a copy of the [Google Cloud SDK](https://cloud.google.com/appengine/docs/standard/java/download) for Java and [ant](http://ant.apache.org/).
Expand All @@ -82,9 +117,11 @@ If you are on an RPM-based distribution(Fedora), use:
Note 2: Certain Java 8 features, such as lambda expressions, are not supported on Android, so please don't use them in your changes to the source code.

### Forking or cloning

Consider ***forking*** the project if you want to make changes to the sources. If you simply want to run it locally, you can simply ***clone*** it.

#### Forking

If you decide to fork, follow the [instructions](https://help.github.com/articles/fork-a-repo) given by github. After that you can clone your own copy of the sources with:

$ git clone https://github.com/YOUR_USER_NAME/appinventor-sources.git
Expand All @@ -101,6 +138,7 @@ Finally, you will also have to make sure that you are ignoring files that need i
$ cp sample-.gitignore .gitignore

### Checkout dependencies

App Inventor uses Blockly, the web-based visual programming editor from Google, as a core part of its editor. Blockly core is made available to App Inventor as a git submodule. The first time after forking or cloning the repository, you will need to perform the following commands:

$ git submodule update --init
Expand All @@ -114,19 +152,23 @@ If you need to switch back to a branch that does contains the Blockly and Closur
to clear out the submodules ___before switching branches___. When switching back, you will need to repeat the initialization and update procedure above.

### Troubleshooting common installation issues

Run this command to run a self-diagnosis of your environment. This command tries to figure out common installation issues and offers you a solution to fix them yourself. Make sure this passes all the checks before you proceed further.

#### Linux and macOS

```bash
./buildtools doctor
```

#### Windows

```bash
buildtools doctor
```

### Compiling
## Compiling

Before compiling the code, an [auth key](https://docs.google.com/document/pub?id=1Xc9yt02x3BRoq5m1PJHBr81OOv69rEBy8LVG_84j9jc#h.yikyg2e1rfut) is needed. You can create one by running the following commands:

$ cd appinventor
Expand All @@ -138,17 +180,48 @@ Once the key is in place, type the following to compile (from the appinventor fo

You will see a lot of stuff in the terminal and after a few minutes (it can take from 2 to 10 minutes, depending on your machine specs) you should see a message saying something like *Build Successful*.

### Running the server(s)
### Notes on compiling for iOS

If you are compiling on a Mac and **are not** interested in building
the companion for iOS, you must set the property `skip.ios` to `true`,
for example:

```bash
ant -Dskip.ios=true
```

iOS builds will automatically be skipped on other operating systems.

We generally use Xcode for iOS development. Open the
AppInventor.xcworkspace file to view the Xcode workspace. This
workspace includes three projects:

* SchemeKit: A Scheme implementation for iOS built on Picrin with
additions to support foreign function calls to Objective-C and
Swift. This also implements some basic types from App Inventor
including YailList and YailDictionary.
* AIComponentKit: App Inventor component implementations, mostly
written in Swift.
* AICompanionApp: The App Inventor companion written in Swift.

In Xcode you can run the AICompanionApp on your device by selecting
the AICompanionApp target's Debug scheme and pressing the Run button.

For more information about iOS support, please see
[README.ios.md](README.ios.md).

## Running the Server(s)

There are two servers in App Inventor, the main server that deals with project information, and the build server that creates apk files. More detailed information can be found in the [App Inventor Developer Overview](https://docs.google.com/document/d/1hIvAtbNx-eiIJcTA2LLPQOawctiGIpnnt0AvfgnKBok/pub) document.

#### Running the main server
### Running the main server

$ your-google-cloud-SDK-folder/bin/java_dev_appserver.sh
--port=8888 --address=0.0.0.0 appengine/build/war/
$ your-google-cloud-SDK-folder/bin/java_dev_appserver.sh --port=8888 --address=0.0.0.0 appengine/build/war/

Make sure you change *your-google-cloud-SDK-folder* to wherever in your hard drive you have placed the Google Cloud SDK.

#### Running the build server
### Running the build server

The build server can be run from the terminal by typing:

$ cd appinventor/buildserver
Expand All @@ -157,18 +230,35 @@ The build server can be run from the terminal by typing:
Note that you will only need to run the build server if you are going to build an app as an apk. You can do all the layout and programming without having the build server running, but you will need it to download the apk.

### Accessing your local server

You should now be up and running; you can test this by pointing your browser to:

http://localhost:8888

Before entering or scanning the QR code in the Companion, check the box labeled "Use Legacy Connection".

### Running tests

The automated tests depend on [Phantomjs](http://phantomjs.org/). Make sure you install it and add it to your path. After that, you can run all tests by typing the following in a terminal window:

$ ant tests


### Building Release Code

Release builds with optimizations turned on for the web components of the system can be done by passing `-Drelease=true` to `ant`, e.g.:

```
ant -Drelease=true noplay
```

The release configuration sets the following additional options:

- Blockly Editor is compiled with SIMPLE optimizations (instead of RAW)
- App Engine YaClient module is compiled without `<collapse-all-properties/>` to create per-language/browser builds
- App Engine YaClient module is compiled with optimization tuned to 9 and with 8 threads

### Hot-reloading GWT code with 'Super Dev Mode'

1. Run `ant devmode`
2. [Run the main server](#running-the-main-server).
3. Open http://localhost:9876 (*GWT CodeServer*) and drag the two bookmarklets (*Dev Mode On & Off*) to the bookmarks bar.
Expand All @@ -183,5 +273,6 @@ The automated tests depend on [Phantomjs](http://phantomjs.org/). Make sure you

Logs can be found at http://localhost:9876/log/ode and SourceMaps at http://localhost:9876/sourcemaps/ode

## Need help?
## Need Help?

Join [our community](https://community.appinventor.mit.edu/).
72 changes: 72 additions & 0 deletions appinventor/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore

## Build generated
build/
DerivedData/
Versions/

## OS Generated Files
*/.DS_Store
.DS_Store
.DS_Store?
*.idea/

## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/

## Other
*.moved-aside
*.xccheckout
*.xcscmblueprint
0Looking

## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM

# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# Pods/

# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts

Carthage/Build

# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md

fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output

# Code Injection
#
# After new code Injection tools there's a generated folder /iOSInjectionProject
# https://github.com/johnno1962/injectionforxcode

iOSInjectionProject/
AICompanionApp.xcconfig
5 changes: 5 additions & 0 deletions appinventor/AICompanionApp.xcconfig.sample
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// -*- mode: conf; -*-
// Copyright 2023 MIT, All rights reserved.

DEVELOPMENT_TEAM = "Your Team ID here"
BUNDLE_IDENTIFIER = "Your custom package here"
Loading