Compare commits
No commits in common. 'master' and 'vite-version' have entirely different histories.
master
...
vite-versi
@ -1,4 +0,0 @@ |
|||
> 1% |
|||
last 2 versions |
|||
not dead |
|||
not ie 11 |
@ -1,12 +0,0 @@ |
|||
# Only the variables that start with VITE_ are seen in the application import.meta.env in Vue. |
|||
|
|||
# iOS doesn't like spaces in the app title. |
|||
TIME_SAFARI_APP_TITLE="TimeSafari_Dev" |
|||
VITE_APP_SERVER=http://localhost:3000 |
|||
# This is the claim ID for actions in the BVC project, with the JWT ID on this environment (not production). |
|||
VITE_BVC_MEETUPS_PROJECT_CLAIM_ID=https://endorser.ch/entity/01HWE8FWHQ1YGP7GFZYYPS272F |
|||
VITE_DEFAULT_ENDORSER_API_SERVER=http://localhost:3000 |
|||
# Using shared server by default to ease setup, which works for shared test users. |
|||
VITE_DEFAULT_IMAGE_API_SERVER=https://test-image-api.timesafari.app |
|||
VITE_DEFAULT_PARTNER_API_SERVER=http://localhost:3000 |
|||
VITE_PASSKEYS_ENABLED=true |
@ -1,6 +0,0 @@ |
|||
# Admin DID credentials |
|||
ADMIN_DID=did:ethr:0x0000694B58C2cC69658993A90D3840C560f2F51F |
|||
ADMIN_PRIVATE_KEY=2b6472c026ec2aa2c4235c994a63868fc9212d18b58f6cbfe861b52e71330f5b |
|||
|
|||
# API Configuration |
|||
ENDORSER_API_URL=https://test-api.endorser.ch/api/v2/claim |
@ -1,11 +0,0 @@ |
|||
# Only the variables that start with VITE_ are seen in the application import.meta.env in Vue. |
|||
|
|||
|
|||
|
|||
VITE_APP_SERVER=https://timesafari.app |
|||
# This is the claim ID for actions in the BVC project. |
|||
VITE_BVC_MEETUPS_PROJECT_CLAIM_ID=https://endorser.ch/entity/01GXYPFF7FA03NXKPYY142PY4H |
|||
VITE_DEFAULT_ENDORSER_API_SERVER=https://api.endorser.ch |
|||
|
|||
VITE_DEFAULT_IMAGE_API_SERVER=https://image-api.timesafari.app |
|||
VITE_DEFAULT_PARTNER_API_SERVER=https://partner-api.endorser.ch |
@ -1,12 +0,0 @@ |
|||
# Only the variables that start with VITE_ are seen in the application import.meta.env in Vue. |
|||
|
|||
# iOS doesn't like spaces in the app title. |
|||
TIME_SAFARI_APP_TITLE="TimeSafari_Test" |
|||
VITE_APP_SERVER=https://test.timesafari.app |
|||
# This is the claim ID for actions in the BVC project, with the JWT ID on this environment (not production). |
|||
VITE_BVC_MEETUPS_PROJECT_CLAIM_ID=https://endorser.ch/entity/01HWE8FWHQ1YGP7GFZYYPS272F |
|||
VITE_DEFAULT_ENDORSER_API_SERVER=https://test-api.endorser.ch |
|||
|
|||
VITE_DEFAULT_IMAGE_API_SERVER=https://test-image-api.timesafari.app |
|||
VITE_DEFAULT_PARTNER_API_SERVER=https://test-partner-api.endorser.ch |
|||
VITE_PASSKEYS_ENABLED=true |
@ -1,31 +0,0 @@ |
|||
module.exports = { |
|||
root: true, |
|||
env: { |
|||
node: true, |
|||
es2022: true, |
|||
}, |
|||
extends: [ |
|||
"plugin:vue/vue3-recommended", |
|||
"eslint:recommended", |
|||
"@vue/typescript/recommended", |
|||
"plugin:prettier/recommended" |
|||
], |
|||
// parserOptions: {
|
|||
// ecmaVersion: 2020,
|
|||
// },
|
|||
rules: { |
|||
"max-len": ["warn", { |
|||
code: 100, |
|||
ignoreComments: true, |
|||
ignorePattern: '^\\s*class="[^"]*"$', |
|||
ignoreStrings: true, |
|||
ignoreTemplateLiterals: true, |
|||
ignoreUrls: true, |
|||
}], |
|||
"no-console": process.env.NODE_ENV === "production" ? "error" : "warn", |
|||
"no-debugger": process.env.NODE_ENV === "production" ? "error" : "warn", |
|||
"@typescript-eslint/no-explicit-any": "warn", |
|||
"@typescript-eslint/explicit-function-return-type": "off", |
|||
"@typescript-eslint/no-unnecessary-type-constraint": "off" |
|||
}, |
|||
}; |
@ -1,27 +0,0 @@ |
|||
name: Playwright Tests |
|||
on: |
|||
push: |
|||
branches: [ main, master ] |
|||
pull_request: |
|||
branches: [ main, master ] |
|||
jobs: |
|||
test: |
|||
timeout-minutes: 60 |
|||
runs-on: ubuntu-latest |
|||
steps: |
|||
- uses: actions/checkout@v4 |
|||
- uses: actions/setup-node@v4 |
|||
with: |
|||
node-version: lts/* |
|||
- name: Install dependencies |
|||
run: npm ci |
|||
- name: Install Playwright Browsers |
|||
run: npx playwright install --with-deps |
|||
- name: Run Playwright tests |
|||
run: npx playwright test |
|||
- uses: actions/upload-artifact@v4 |
|||
if: always() |
|||
with: |
|||
name: playwright-report |
|||
path: playwright-report/ |
|||
retention-days: 30 |
@ -0,0 +1,3 @@ |
|||
{ |
|||
"recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] |
|||
} |
@ -1,454 +0,0 @@ |
|||
# Building TimeSafari |
|||
|
|||
This guide explains how to build TimeSafari for different platforms. |
|||
|
|||
## Prerequisites |
|||
|
|||
For a quick dev environment setup, use [pkgx](https://pkgx.dev). |
|||
|
|||
- Node.js (LTS version recommended) |
|||
- npm (comes with Node.js) |
|||
- Git |
|||
- For iOS builds: macOS with Xcode installed |
|||
- For Android builds: Android Studio with SDK installed |
|||
- For desktop builds: Additional build tools based on your OS |
|||
|
|||
## Forks |
|||
|
|||
If you have forked this to make your own app, you'll want to customize the iOS & Android files. You can either edit existing ones, or you can remove the `ios` and `android` directories and regenerate them before the `npx cap sync` step in each setup. |
|||
|
|||
```bash |
|||
npx cap add android |
|||
npx cap add ios |
|||
``` |
|||
|
|||
You'll also want to edit the deep link configuration. |
|||
|
|||
## Initial Setup |
|||
|
|||
1. Clone the repository: |
|||
|
|||
```bash |
|||
git clone [repository-url] |
|||
cd TimeSafari |
|||
``` |
|||
|
|||
2. Install dependencies: |
|||
|
|||
```bash |
|||
npm install |
|||
``` |
|||
|
|||
## Web Build |
|||
|
|||
To build for web deployment: |
|||
|
|||
1. Run the production build: |
|||
|
|||
```bash |
|||
npm run build |
|||
``` |
|||
|
|||
2. The built files will be in the `dist` directory. |
|||
|
|||
3. To test the production build locally: |
|||
|
|||
```bash |
|||
npm run serve |
|||
``` |
|||
|
|||
## Desktop Build (Electron) |
|||
|
|||
### Building for Linux |
|||
|
|||
1. Build the electron app in production mode: |
|||
|
|||
```bash |
|||
npm run build:electron-prod |
|||
``` |
|||
|
|||
2. Package the Electron app for Linux: |
|||
|
|||
```bash |
|||
# For AppImage (recommended) |
|||
npm run electron:build-linux |
|||
|
|||
# For .deb package |
|||
npm run electron:build-linux-deb |
|||
``` |
|||
|
|||
3. The packaged applications will be in `dist-electron-packages/`: |
|||
- AppImage: `dist-electron-packages/TimeSafari-x.x.x.AppImage` |
|||
- DEB: `dist-electron-packages/timesafari_x.x.x_amd64.deb` |
|||
|
|||
### Running the Packaged App |
|||
|
|||
- AppImage: Make executable and run |
|||
|
|||
```bash |
|||
chmod +x dist-electron-packages/TimeSafari-*.AppImage |
|||
./dist-electron-packages/TimeSafari-*.AppImage |
|||
``` |
|||
|
|||
- DEB: Install and run |
|||
|
|||
```bash |
|||
sudo dpkg -i dist-electron-packages/timesafari_*_amd64.deb |
|||
timesafari |
|||
``` |
|||
|
|||
### Development Testing |
|||
|
|||
For testing the Electron build before packaging: |
|||
|
|||
```bash |
|||
# Build and run in development mode (includes DevTools) |
|||
npm run electron:dev |
|||
|
|||
# Build in production mode and test |
|||
npm run build:electron-prod && npm run electron:start |
|||
``` |
|||
|
|||
## Mobile Builds (Capacitor) |
|||
|
|||
### iOS Build |
|||
|
|||
Prerequisites: macOS with Xcode installed |
|||
|
|||
1. Build the web assets: |
|||
|
|||
```bash |
|||
npm run build:capacitor |
|||
``` |
|||
|
|||
2. Update iOS project with latest build: |
|||
|
|||
```bash |
|||
npx cap sync ios |
|||
``` |
|||
|
|||
3. Copy the assets: |
|||
|
|||
```bash |
|||
mkdir -p ios/App/App/Assets.xcassets/AppIcon.appiconset |
|||
npx capacitor-assets generate --ios |
|||
``` |
|||
|
|||
3. Open the project in Xcode: |
|||
|
|||
```bash |
|||
npx cap open ios |
|||
``` |
|||
|
|||
4. Use Xcode to build and run on simulator or device. |
|||
|
|||
### Android Build |
|||
|
|||
Prerequisites: Android Studio with SDK installed |
|||
|
|||
1. Build the web assets: |
|||
|
|||
```bash |
|||
rm -rf dist |
|||
npm run build:web |
|||
npm run build:capacitor |
|||
``` |
|||
|
|||
2. Update Android project with latest build: |
|||
|
|||
```bash |
|||
npx cap sync android |
|||
``` |
|||
|
|||
3. Copy the assets |
|||
|
|||
```bash |
|||
npx capacitor-assets generate --android |
|||
``` |
|||
|
|||
4. Open the project in Android Studio: |
|||
|
|||
```bash |
|||
npx cap open android |
|||
``` |
|||
|
|||
5. Use Android Studio to build and run on emulator or device. |
|||
|
|||
## Building Android from the console |
|||
|
|||
```bash |
|||
cd android |
|||
./gradlew clean |
|||
./gradlew build -Dlint.baselines.continue=true |
|||
cd .. |
|||
npx cap run android |
|||
``` |
|||
|
|||
... or, to create the `aab` file, `bundle` instead of `build`: |
|||
|
|||
```bash |
|||
./gradlew bundle -Dlint.baselines.continue=true |
|||
``` |
|||
|
|||
|
|||
## Configuring Android for deep links |
|||
|
|||
You must add the following intent filter to the `android/app/src/main/AndroidManifest.xml` file: |
|||
|
|||
```xml |
|||
<intent-filter android:autoVerify="true"> |
|||
<action android:name="android.intent.action.VIEW" /> |
|||
<category android:name="android.intent.category.DEFAULT" /> |
|||
<category android:name="android.intent.category.BROWSABLE" /> |
|||
<data android:scheme="timesafari" /> |
|||
</intent-filter> |
|||
``` |
|||
|
|||
You must also add the following to the `android/app/build.gradle` file: |
|||
|
|||
```gradle |
|||
android { |
|||
// ... existing config ... |
|||
|
|||
lintOptions { |
|||
disable 'UnsanitizedFilenameFromContentProvider' |
|||
abortOnError false |
|||
baseline file("lint-baseline.xml") |
|||
|
|||
// Ignore Capacitor module issues |
|||
ignore 'DefaultLocale' |
|||
ignore 'UnsanitizedFilenameFromContentProvider' |
|||
ignore 'LintBaseline' |
|||
ignore 'LintBaselineFixed' |
|||
} |
|||
} |
|||
``` |
|||
|
|||
Modify `/android/build.gradle` to use a stable version of AGP and make sure Kotlin version is compatible. |
|||
|
|||
```gradle |
|||
buildscript { |
|||
repositories { |
|||
google() |
|||
mavenCentral() |
|||
} |
|||
dependencies { |
|||
// Use a stable version of AGP |
|||
classpath 'com.android.tools.build:gradle:8.1.0' |
|||
|
|||
// Make sure Kotlin version is compatible |
|||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0" |
|||
} |
|||
} |
|||
|
|||
allprojects { |
|||
repositories { |
|||
google() |
|||
mavenCentral() |
|||
} |
|||
} |
|||
|
|||
// Add this to handle version conflicts |
|||
configurations.all { |
|||
resolutionStrategy { |
|||
force 'org.jetbrains.kotlin:kotlin-stdlib:1.8.0' |
|||
force 'org.jetbrains.kotlin:kotlin-stdlib-common:1.8.0' |
|||
} |
|||
} |
|||
``` |
|||
|
|||
## PyWebView Desktop Build |
|||
|
|||
### Prerequisites for PyWebView |
|||
|
|||
- Python 3.8 or higher |
|||
- pip (Python package manager) |
|||
- virtualenv (recommended) |
|||
- System dependencies: |
|||
|
|||
```bash |
|||
# For Ubuntu/Debian |
|||
sudo apt-get install python3-webview |
|||
# or |
|||
sudo apt-get install python3-gi python3-gi-cairo gir1.2-gtk-3.0 gir1.2-webkit2-4.0 |
|||
|
|||
# For Arch Linux |
|||
sudo pacman -S webkit2gtk python-gobject python-cairo |
|||
|
|||
# For Fedora |
|||
sudo dnf install python3-webview |
|||
# or |
|||
sudo dnf install python3-gobject python3-cairo webkit2gtk3 |
|||
``` |
|||
|
|||
### Setup |
|||
|
|||
1. Create and activate a virtual environment (recommended): |
|||
|
|||
```bash |
|||
python -m venv .venv |
|||
source .venv/bin/activate # On Linux/macOS |
|||
# or |
|||
.venv\Scripts\activate # On Windows |
|||
``` |
|||
|
|||
2. Install Python dependencies: |
|||
|
|||
```bash |
|||
pip install -r requirements.txt |
|||
``` |
|||
|
|||
### Troubleshooting |
|||
|
|||
If encountering PyInstaller version errors: |
|||
|
|||
```bash |
|||
# Try installing the latest stable version |
|||
pip install --upgrade pyinstaller |
|||
``` |
|||
|
|||
### Development of PyWebView |
|||
|
|||
1. Start the PyWebView development build: |
|||
|
|||
```bash |
|||
npm run pywebview:dev |
|||
``` |
|||
|
|||
### Building for Distribution |
|||
|
|||
#### Linux |
|||
|
|||
```bash |
|||
npm run pywebview:package-linux |
|||
``` |
|||
|
|||
The packaged application will be in `dist/TimeSafari` |
|||
|
|||
#### Windows |
|||
|
|||
```bash |
|||
npm run pywebview:package-win |
|||
``` |
|||
|
|||
The packaged application will be in `dist/TimeSafari` |
|||
|
|||
#### macOS |
|||
|
|||
```bash |
|||
npm run pywebview:package-mac |
|||
``` |
|||
|
|||
The packaged application will be in `dist/TimeSafari` |
|||
|
|||
## Testing |
|||
|
|||
Run all tests (requires XCode and Android Studio/device): |
|||
|
|||
```bash |
|||
npm run test:all |
|||
``` |
|||
|
|||
See [TESTING.md](test-playwright/TESTING.md) for more details. |
|||
|
|||
## Linting |
|||
|
|||
Check code style: |
|||
|
|||
```bash |
|||
npm run lint |
|||
``` |
|||
|
|||
Fix code style issues: |
|||
|
|||
```bash |
|||
npm run lint-fix |
|||
``` |
|||
|
|||
## Environment Configuration |
|||
|
|||
See `.env.*` files for configuration. |
|||
|
|||
## Notes |
|||
|
|||
- The application uses PWA (Progressive Web App) features for web builds |
|||
- Electron builds disable PWA features automatically |
|||
- Build output directories: |
|||
- Web: `dist/` |
|||
- Electron: `dist-electron/` |
|||
- Capacitor: `dist-capacitor/` |
|||
|
|||
## Deployment |
|||
|
|||
### Version Management |
|||
|
|||
1. Update CHANGELOG.md with new changes |
|||
2. Update version in package.json |
|||
3. Commit changes and tag release: |
|||
|
|||
```bash |
|||
git tag <VERSION_TAG> |
|||
git push origin <VERSION_TAG> |
|||
``` |
|||
|
|||
4. After deployment, update package.json with next version + "-beta" |
|||
|
|||
### Test Server |
|||
|
|||
```bash |
|||
# Build using staging environment |
|||
npm run build -- --mode staging |
|||
|
|||
# Deploy to test server |
|||
rsync -azvu -e "ssh -i ~/.ssh/<YOUR_KEY>" dist ubuntutest@test.timesafari.app:time-safari/ |
|||
``` |
|||
|
|||
### Production Server |
|||
|
|||
```bash |
|||
# On the production server: |
|||
pkgx +npm sh |
|||
cd crowd-funder-for-time-pwa |
|||
git checkout master && git pull |
|||
git checkout <VERSION_TAG> |
|||
npm install |
|||
npm run build |
|||
cd - |
|||
|
|||
# Backup and deploy |
|||
mv time-safari/dist time-safari-dist-prev.0 && mv crowd-funder-for-time-pwa/dist time-safari/ |
|||
``` |
|||
|
|||
## Troubleshooting Builds |
|||
|
|||
### Common Build Issues |
|||
|
|||
1. **Missing Environment Variables** |
|||
- Check that all required variables are set in your .env file |
|||
- For development, ensure local services are running on correct ports |
|||
|
|||
2. **Electron Build Failures** |
|||
- Verify Node.js version compatibility |
|||
- Check that all required dependencies are installed |
|||
- Ensure proper paths in electron/main.js |
|||
|
|||
3. **Mobile Build Issues** |
|||
- For iOS: Xcode command line tools must be installed |
|||
- For Android: Correct SDK version must be installed |
|||
- Check Capacitor configuration in capacitor.config.ts |
|||
|
|||
|
|||
# List all installed packages |
|||
adb shell pm list packages | grep timesafari |
|||
|
|||
# Force stop the app (if it's running) |
|||
adb shell am force-stop app.timesafari |
|||
|
|||
# Clear app data (if you don't want to fully uninstall) |
|||
adb shell pm clear app.timesafari |
|||
|
|||
# Uninstall for all users |
|||
adb shell pm uninstall -k --user 0 app.timesafari |
|||
|
|||
# Check if app is installed |
|||
adb shell pm path app.timesafari |
@ -1,729 +0,0 @@ |
|||
# Changelog |
|||
|
|||
All notable changes to this project will be documented in this file. |
|||
|
|||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
|||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
|||
|
|||
|
|||
|
|||
## [0.4.5] - 2025.02.23 |
|||
### Added |
|||
- Total amounts of gives on project page |
|||
### Changed in DB or environment |
|||
- Requires Endorser.ch version 4.2.6+ |
|||
|
|||
|
|||
## [0.4.4] - 2025.02.17 |
|||
|
|||
### Fixed in 0.4.4 |
|||
|
|||
- On production (due to data?) the search results would disappear after scrolling down. Now we don't show any results when going to the people map with a shortcut. |
|||
|
|||
## [0.4.3] - 2025.02.17 |
|||
|
|||
### Added in 0.4.3 |
|||
|
|||
- Discover query parameter searchPeople to go directly to the people map |
|||
|
|||
## [0.4.2] - 2025.02.17 |
|||
|
|||
### Added |
|||
|
|||
- Capacitor on iOS and Android |
|||
|
|||
### Fixed |
|||
|
|||
- Path issues |
|||
|
|||
## [0.4.1] - 2025.02.16 |
|||
|
|||
### Fixed in 0.4.1 |
|||
|
|||
- nostr build issue |
|||
- Linting |
|||
|
|||
## [0.4.0] - 2025.02.14 |
|||
|
|||
### Changed |
|||
|
|||
- Images in the home feed now take up the full width of the card. |
|||
- Clicking the image previously, would open the image in a new tab. Now, clicking the image opens the image in a lightbox view. |
|||
|
|||
### Added in 0.4.0 |
|||
|
|||
- Clicking an image also now displays an in-app lightbox view of the image. |
|||
- The lightbox view includes a download button for the image in mobile view. |
|||
|
|||
## [0.3.57] - 2025.02.11 |
|||
|
|||
### Added in 0.3.57 |
|||
|
|||
- Automatic user creation in onboarding meetings |
|||
|
|||
## [0.3.55] - 2025.02.07 |
|||
|
|||
### Added in 0.3.55 |
|||
|
|||
- End time for projects |
|||
|
|||
## [0.3.54] - 2025.02.06 |
|||
|
|||
### Added in 0.3.54 |
|||
|
|||
- Group onboarding meetings |
|||
|
|||
## [0.3.53] - 2025.01.30 |
|||
|
|||
### Added in 0.3.53 |
|||
|
|||
- Hints for contacting the creator of a project |
|||
|
|||
## [0.3.52] - 2025.01.22 |
|||
|
|||
### Fixed in 0.3.52 |
|||
|
|||
- User profile endpoint server for map was broken. |
|||
|
|||
## [0.3.51] - 2025.01.22 |
|||
|
|||
### Fixed in 0.3.51 |
|||
|
|||
- User profile map jumped on first zoom. |
|||
|
|||
## [0.3.50] - 2025.01.20 - b9fedcd3fd3e34c3fb0fc79150d1a81a76eaeb40 |
|||
|
|||
### Added in 0.3.50 |
|||
|
|||
- User public profiles |
|||
|
|||
## [0.3.49] - 2025.01.09 - 36301ed238ff84df25bb11a8d44a295ee7eaf0f8 |
|||
|
|||
### Changed in 0.3.49 |
|||
|
|||
- Make all external contact links direct to the contact-import page. |
|||
- Handle all new-single-contact JWTs in the contacts page, and multiple-contact JWTs in the contacts-import page. |
|||
|
|||
## [0.3.48] - 2025.01.08 - 398f3e64a376789f7eb1c400cd886f5a2cacd588 (but app shows 07c4e58) |
|||
|
|||
### Added in 0.3.48 |
|||
|
|||
- More sanity-checks on contact-import JWT |
|||
|
|||
## [0.3.47] - 2025.01.06 - 5bf6dd1ee32ca7cc46d39bd7afca58365b422f93 |
|||
|
|||
### Added in 0.3.47 |
|||
|
|||
- Notes on contacts page with new contact-edit page |
|||
- Contact methods (only on contact-edit page and under DID details) |
|||
- DID view with no DID shows user's info. |
|||
|
|||
### Changed in 0.3.47 |
|||
|
|||
- URL for user's contact info is now URL to this app (not endorser.ch). |
|||
- Extended details (eg. full claim) is beneath details link on claim page. |
|||
|
|||
## [0.3.46] - 2025.01.03 - 9e7056616b5e5acc51e5a8cf7354d408029fefb3 |
|||
|
|||
### Added in 0.3.46 |
|||
|
|||
- More action-oriented questions for the gift prompts |
|||
|
|||
### Fixed in 0.3.46 |
|||
|
|||
- Contact-list import set visibility for all, even if not chosen. |
|||
|
|||
## [0.3.45] - 2025.01.01 - 65402dc68ce69ccc6cb9aa8d2e7a9249bf4298e0 |
|||
|
|||
### Fixed in 0.3.45 |
|||
|
|||
- Previous project links stayed when following a link. |
|||
|
|||
## [0.3.44] - 2024.12.31 - 694b22987b05482e4527c2478bbe15e6b6f3b532 |
|||
|
|||
### Added in 0.3.44 |
|||
|
|||
- Project counts on a map |
|||
|
|||
## [0.3.42] - 2024.12.27 - 9751934bc24a1040415a8cfeacbae59ed91f92a5 |
|||
|
|||
### Added in 0.3.42 |
|||
|
|||
- Link from certificate page to the claim |
|||
|
|||
### Changed in 0.3.42 |
|||
|
|||
- Contact data sharing is now a verified JWT. |
|||
- Feed pictures are larger. |
|||
|
|||
## [0.3.41] - 2024.12.21 - ff6d14138f26daea6216b051562f0a04681f69fc |
|||
|
|||
### Added in 0.3.41 |
|||
|
|||
- Link from certificate page to the claim |
|||
|
|||
## [0.3.40] - 2024.12.20 - 77290d9fed3c364243793dc3e9bfe2e994a016b8 |
|||
|
|||
### Added in 0.3.40 |
|||
|
|||
- Only show issuer on certificate if it's not the agent. |
|||
|
|||
## [0.3.39] - 2024.12.20 - d8819155e2acd2b57fdab523168fa5d1d09e80cc |
|||
|
|||
### Added in 0.3.39 |
|||
|
|||
- Page for a framed claim certificate |
|||
|
|||
## [0.3.38] - 2024.12.14 - f8cae5ad4fee1f114320dcce052299eab12108b2 |
|||
|
|||
### Fixed in 0.3.38 |
|||
|
|||
- Error on BVC confirmation screen (from IndexedDB refactor) |
|||
|
|||
## [0.3.37] - 2024.12.13 - 4d805b43cd25eed73cdd6651f36ad1ec8c109555 |
|||
|
|||
### Added in 0.3.37 |
|||
|
|||
- Record a give from a project on the project page. |
|||
- New button on home page opens the gifted dialog. |
|||
- On confirmation buttons on the project page gives, mark when unavailable and explain why. |
|||
|
|||
### Changed in 0.3.37 |
|||
|
|||
- Moved the secret into IndexedDB (and out of localStorage) for more reliability. |
|||
- New "invite" destination page helps troubleshoot when JWT link doesn't come through. |
|||
|
|||
### Fixed in 0.3.37 |
|||
|
|||
- Problem showing claim issuer name |
|||
- Problem going "back" from a project page |
|||
|
|||
## [0.3.36] - 2024.11.24 - c8d23647d165016f8a8f575e13d32583242e53ac |
|||
|
|||
### Changed in 0.3.36 |
|||
|
|||
- More friendly default reminder message |
|||
- Blue borders around people to indicate clickability |
|||
|
|||
## [0.3.35] - 2024.11.24 - bff7d0a6320b70349185e26bfac72e3bb17f76df |
|||
|
|||
### Added in 0.3.35 |
|||
|
|||
- Daily reliable, hard-coded notification message |
|||
- Setting to change the partner API server |
|||
|
|||
## [0.3.33] - 2024.11.07 - adb7b16ecf1343c39cba71a7d6bb0e7a973e1102 |
|||
|
|||
### Fixed in 0.3.33 |
|||
|
|||
- Affirm Delivery button on offer claim page didn't work. |
|||
- Plans were not showing by default on project page. |
|||
|
|||
## [0.3.32] - 2024.11.06 - 9a3fa38a3fd28f977e06f0265fc39e635c9c5ccd |
|||
|
|||
### Added in 0.3.32 |
|||
|
|||
- Highlight in green new offers to user & to user's projects on the front page. |
|||
|
|||
## [0.3.31] - 2024.10.25 - 07c02ab98a09d293dd90d9289a7872e7d681d296 |
|||
|
|||
### Changed in 0.3.31 |
|||
|
|||
- Onboarding messages about offers |
|||
|
|||
## [0.3.30] |
|||
|
|||
### Added in 0.3.30 |
|||
|
|||
- Onboarding messages |
|||
|
|||
## [0.3.29] - 2024.10.09 - babd3832bdfe0c40eaa3869de1b41399a51713c1 |
|||
|
|||
### Added in 0.3.29 |
|||
|
|||
- Invite for a contact to join immediately |
|||
|
|||
### Changed in 0.3.29 |
|||
|
|||
- Send signed data to nostr endpoints to verify public key ownership. |
|||
- Enhanced help & help onboarding. |
|||
|
|||
### Changed in DB or environment |
|||
|
|||
- Uses Endorser.ch version 4.1.1 |
|||
|
|||
## [0.3.28] - 2024.09.30 - 84720b94049d29cc0ddd99c50cef2e7176130133 |
|||
|
|||
### Added in 0.3.28 |
|||
|
|||
- Posting to nostr apps Trustroots & TripHopping |
|||
- Display of providers on claim view page |
|||
|
|||
### Changed in 0.3.28 |
|||
|
|||
- Switched BVC-meeting-ending gift to be a gift from the group. |
|||
|
|||
### Changed in DB or environment in 0.3.28 |
|||
|
|||
- Requires Endorser.ch version 4.1.0 |
|||
|
|||
## [0.3.27] - 2024.09.22 - ee23e6f005e47f5bd6f04d804599f6395371b0e4 |
|||
|
|||
### Fixed in 0.3.27 |
|||
|
|||
- Error loading BVC claims to confirm |
|||
- Really allow visibility of bulk-imported contacts |
|||
|
|||
## [0.3.26] - 2024.09.16 - 8263ed2b29947b3ccc6f3133bbc9454c222bce28 |
|||
|
|||
### Added in 0.3.26 |
|||
|
|||
- Separate 'isRegistered' flag for each account |
|||
|
|||
### Fixed in 0.3.26 |
|||
|
|||
- Failure to assign offers to their project |
|||
- Alert when looking at one's own activity if not in contacts. |
|||
|
|||
## [0.3.25] - 2024.08.30 - dcbe02d877aecb4cdef2643d90e6595d246a9f82 |
|||
|
|||
### Added in 0.3.25 |
|||
|
|||
- "Ideas" now jumps directly to giving prompt or contact list. |
|||
|
|||
### Fixed in 0.3.25 |
|||
|
|||
- Empty giver name on gifted-details view |
|||
- Previously visited project would show up on the giving-details page. |
|||
|
|||
### Removed in 0.3.25 |
|||
|
|||
- All unnecessary localStorage for project IDs |
|||
|
|||
## [0.3.23] - 2024.08.30 |
|||
|
|||
### Added in 0.3.23 |
|||
|
|||
- Sections in Help for different kinds of users |
|||
- Discovery page parameters so that links with search text work |
|||
- Message when no projects are found |
|||
|
|||
## [0.3.21] - 2024.08.24 - a7b89f4bb6da928d56daeffaae7741fa74cc80bf |
|||
|
|||
### Added in 0.3.21 |
|||
|
|||
- Send list of contacts to someone, and move individual contact actions to detail page. |
|||
- Prompt for name in pop-up, and send to different contact-sharing screens. |
|||
|
|||
### Changed in 0.3.21 |
|||
|
|||
- Moved contact actions from list onto detail page |
|||
|
|||
## [0.3.20] - 2024.08.18 - 4064eb75a9743ca268bf00016fa0a5fc5dec4e30 |
|||
|
|||
### Fixed in 0.3.20 |
|||
|
|||
- Bad "give" verbiage on offer page |
|||
- Failing offer test |
|||
|
|||
## [0.3.19] - 2024.08.18 - ee9c14942ceba993bf21a11249601f205158ec71 |
|||
|
|||
### Added in 0.3.19 |
|||
|
|||
- Update of an offer |
|||
- Recipient description in offer list |
|||
|
|||
### Fixed in 0.3.19 |
|||
|
|||
- List of offers wasn't showing. |
|||
- Destination page after sharing photo was wrong. |
|||
|
|||
## [0.3.17] - 2024.07.11 - cefa384ff1a2d922848c370640c096c529920fab |
|||
|
|||
### Added in 0.3.17 |
|||
|
|||
- Photos on more screens |
|||
|
|||
### Fixed in 0.3.17 |
|||
|
|||
- Share of a photo, including sharing a photo from webkit/Safari which never worked |
|||
|
|||
### Changed in DB or environment in 0.3.17 |
|||
|
|||
- Nothing (though there's a new temp field in IndexedDB) |
|||
|
|||
## [0.3.15] - 2024.08.04 - c8f0f2c2b16b9f0b4b47d40f7bf29058c7baa68e |
|||
|
|||
### Added in 0.3.15 |
|||
|
|||
- Edit gives |
|||
- Page to edit claim JSON before submitting |
|||
- Update of imported contacts |
|||
- Improve messaging on give dialog |
|||
- Section for gives provided by plan |
|||
- Deletion of an identity |
|||
- UI for choosing a passkey creation (not enabled on prod) |
|||
- Cache signatures for reports for passkey-signed requests |
|||
- Refactor: consolidate alternative signing, eg. for passkeys & did:peer |
|||
- Playwright tests |
|||
|
|||
### Changed in 0.3.15 |
|||
|
|||
- Linked projects display below description (instead of at bottom) |
|||
|
|||
### Fixed in 0.3.15 |
|||
|
|||
- Visibility toggle appearance |
|||
|
|||
### Changed in DB or environment in 0.3.15 |
|||
|
|||
- Nothing |
|||
|
|||
## [0.3.14] - 2024.06.22 - 1611d22892f683f43856d2503eee7f391b6bbce8 |
|||
|
|||
### Added in 0.3.14 |
|||
|
|||
- Clearer give-confirmation screen |
|||
- BX currency <https://thebx.medium.com/> |
|||
- Deselection of project on gifted details page |
|||
|
|||
### Fixed in 0.3.14 |
|||
|
|||
- Don't show registration pop-up for a new contact that is registered |
|||
|
|||
### Changed in DB or environment in 0.3.14 |
|||
|
|||
- Nothing |
|||
|
|||
## [0.3.13] - 2024.05.24 - 08b67984e443c58d9178ad3776013b0bce7afddc |
|||
|
|||
### Added in 0.3.13 |
|||
|
|||
- Photos on projects |
|||
|
|||
### Changed in DB or environment in 0.3.13 |
|||
|
|||
- Nothing |
|||
|
|||
## [0.3.12] - 2024.05.19 - 141fb39ad19c44d82fe1a33bf85115beacf50870 |
|||
|
|||
### Fixed in 0.3.12 |
|||
|
|||
- Photo share (share_target) failed because requests were sent to server |
|||
|
|||
### Changed in DB or environment in 0.3.12 |
|||
|
|||
- Nothing |
|||
|
|||
## [0.3.11] - 2024.05.19 - 567bcad88dfb7e9ac8fea72530d1163985e4a7cc |
|||
|
|||
### Added in 0.3.11 |
|||
|
|||
- Choose a file for gifts, and a URL for gifts & profiles |
|||
|
|||
### Fixed in 0.3.11 |
|||
|
|||
- Multiple button pushes were required to switch camera |
|||
|
|||
### Changed in DB or environment in 0.3.11 |
|||
|
|||
- Nothing |
|||
|
|||
## [0.3.10] - 2024.05.11 - 03ac31d98110f7828cf9acb366db8d01b185f64c |
|||
|
|||
### Added in 0.3.10 |
|||
|
|||
- Share an image |
|||
- Choose a file on the device for a profile image |
|||
|
|||
### Changed in DB or environment in 0.3.10 |
|||
|
|||
- Nothing |
|||
|
|||
## [0.3.9] - 2024.04.28 - 874e717e698b93a1ace9f588e675b8a3dccd7617 |
|||
|
|||
### Added in 0.3.9 |
|||
|
|||
- Offers on contacts page |
|||
- Checks on front page until they show as registered |
|||
|
|||
### Changed in 0.3.9 |
|||
|
|||
- Scanned contacts now add immediately and prompt for registration. |
|||
- Better UI for gives on contact page |
|||
- Better UI for all confirmation messages |
|||
|
|||
### Fixed in 0.3.9 |
|||
|
|||
- Repeated elements at top of main feed |
|||
|
|||
### Changed in DB or environment in 0.3.9 |
|||
|
|||
- Nothing |
|||
|
|||
## [0.3.8] - 2024.04.20 - 15c026c80ce03a26cae3ff80b0888934c101c7e2 |
|||
|
|||
### Added in 0.3.8 |
|||
|
|||
- Profile image for user |
|||
|
|||
### Fixed in 0.3.8 |
|||
|
|||
- Slow loading of home page feed |
|||
|
|||
### Changed in DB or environment in 0.3.8 |
|||
|
|||
- Nothing |
|||
|
|||
## [0.3.7] - 2024.04.10 - cf18f1543a700d62a5f9e764905a4aafe1fb229b |
|||
|
|||
### Added in 0.3.7 |
|||
|
|||
- Filter on home page feed |
|||
- Ability to set time of daily notification |
|||
- Jump to app on click of notification |
|||
|
|||
### Changed in 0.3.7 |
|||
|
|||
- Built with vite |
|||
- Descriptions on home page to include projects |
|||
|
|||
### Changed in DB or environment in 0.3.7 |
|||
|
|||
- Nothing |
|||
|
|||
## [0.3.6] - 2024.03.24 - 3a07e31d6313ab95711265562d9023c42916e141 |
|||
|
|||
### Added in 0.3.6 |
|||
|
|||
- Button to mirror photo during video |
|||
- More detailed onboarding help screen |
|||
- Public-data blurb |
|||
|
|||
### Changed in DB or environment in 0.3.6 |
|||
|
|||
- Nothing |
|||
|
|||
## [0.3.5] - 2024.03.23 - 28754bdfb1e11aa221dd49a5dce4219b69cf6a9d |
|||
|
|||
### Added in 0.3.5 |
|||
|
|||
- Photo on gift records |
|||
|
|||
### Fixed in 0.3.5 |
|||
|
|||
- Environment variable for BVC meetings project |
|||
- Environment variables and build enhancements for test vs prod |
|||
|
|||
### Changed in DB or environment in 0.3.5 |
|||
|
|||
- New environment variable for image API server |
|||
- Test that a new browser session will get the right default APIs. |
|||
- Test that a new browser session will send the right BVC meetings project. |
|||
|
|||
## [0.2.17] - 2024.03.01 - 3612ea42240c5e1b7d7eff29a39ff18f1b869b36 |
|||
|
|||
### Added in 0.2.17 |
|||
|
|||
- Shortcut page for Bountiful Voluntaryist Community |
|||
|
|||
### Changed in 0.2.17 |
|||
|
|||
- More readable, targeted summaries in home-page feed items |
|||
|
|||
### Changed in DB |
|||
|
|||
- Nothing |
|||
|
|||
## [0.2.14] - 2024.02.14 - 5f9edea1167dbfb64e16648764eed8c09b24eaeb |
|||
|
|||
### Changed in 0.2.14 |
|||
|
|||
- Combine all service worker scripts into a single file. |
|||
|
|||
### Changed in DB in 0.2.14 |
|||
|
|||
- Nothing |
|||
|
|||
## [0.2.13] - 2024.02.07 |
|||
|
|||
### Added in 0.2.13 |
|||
|
|||
- Display of user's offers |
|||
- Check for valid DIDs |
|||
|
|||
### Fixed in 0.2.13 |
|||
|
|||
- Name display on give prompt |
|||
- Non-numbers on number input & autocapitalize on URL input |
|||
|
|||
### Changed in DB in 0.2.13 |
|||
|
|||
- Nothing |
|||
|
|||
## [0.2.12] - 2024.02.01 |
|||
|
|||
### Added in 0.2.12 |
|||
|
|||
- Prompts for gratitude |
|||
|
|||
## [0.2.11] - 2024.01.28 |
|||
|
|||
### Added in 0.2.11 |
|||
|
|||
- Actions to share claim data with contacts |
|||
- Bulk CSV import from Endorser Mobile export |
|||
- Dates on give summaries |
|||
|
|||
## [0.2.10] - 2024.01.18 - 667e1e8890b42de59cd939caca1a01c7a7a702be |
|||
|
|||
### Added in 0.2.10 |
|||
|
|||
- Person identicons for contacts |
|||
- Confirmation & delivery directly from project page |
|||
- Offer dialog now allows units |
|||
- Links from claim detail page to the fulfilled project or offer |
|||
- Link to project from home feed |
|||
- Copy to clipboard in more places |
|||
|
|||
### Fixed in 0.2.10 |
|||
|
|||
- "More Contacts" for give on project page now links correctly. |
|||
|
|||
## [0.2.9] - 2024.01.15 - e5e702f8a5a53a6efbed48d35f0bc3cee63024a0 |
|||
|
|||
### Fixed in 0.2.9 |
|||
|
|||
- Set visibility for new contact. |
|||
|
|||
## [0.2.8] - 2024.01.14 |
|||
|
|||
### Added in 0.2.8 |
|||
|
|||
- Automatic ID creation from home page |
|||
- Agent who can also edit a project |
|||
|
|||
### Fixed in 0.2.8 |
|||
|
|||
- Cannot declare anonymous gift |
|||
|
|||
## [0.2.7] - 2024.01.12 |
|||
|
|||
### Added in 0.2.7 |
|||
|
|||
- Give to fulfill a particular offer |
|||
- Give as part of a trade as opposed to a donation |
|||
- Error notifications on import |
|||
|
|||
### Changed in 0.2.7 |
|||
|
|||
- Library security updates |
|||
- Visibility of actions & confirmations on claim page |
|||
|
|||
### Fixed in 0.2.7 |
|||
|
|||
- Name of offerer |
|||
|
|||
## [0.2.2] - 2024.01.05 |
|||
|
|||
### Added in 0.2.2 |
|||
|
|||
- Check for notification capability on front screen |
|||
- Contact next-public-key-hash in manual textual input |
|||
- Confirmation for contact visibility change |
|||
- YAML rendering of full claim details |
|||
- Hints for onboarding on the contact screen |
|||
|
|||
## [0.2.0] - 2024.01.04 |
|||
|
|||
### Added in 0.2.0 |
|||
|
|||
- Contact next-public-key-hash |
|||
- Icon for Android |
|||
- More thorough messaging and testing for notifications |
|||
|
|||
## [0.1.9] - 2024.01.01 |
|||
|
|||
### Added in 0.1.9 |
|||
|
|||
- Import for contacts and settings |
|||
- Second download button for DuckDuckGo |
|||
|
|||
### Changed in 0.1.9 |
|||
|
|||
- Removed some keys from Dexie's IndexedDB declarations |
|||
|
|||
## [0.1.8] - 2023.12.27- d26d1d360152a7d0e559b68486e85b72b88bd9ff |
|||
|
|||
### Added in 0.1.8 |
|||
|
|||
- DB logging for service-worker events |
|||
- Help page for notifications |
|||
- Test notification & web-push triggers inside app |
|||
- Check that the app is installed |
|||
|
|||
### Fixed in 0.1.8 |
|||
|
|||
- Project issuer display name |
|||
|
|||
## [0.1.7] - 2023.12.19 - 91c6c7c11c71f96006cc876fc946f1f98a274ba2 |
|||
|
|||
### Changed in 0.1.7 |
|||
|
|||
- Icons |
|||
|
|||
### Fixed in 0.1.7 |
|||
|
|||
- Notification switch now shows message |
|||
- Prod/test server warning message at top of page |
|||
|
|||
## [0.1.6] - 2023.12.17 - b445b1234fbfcf6b37d695373f259aab0eda1118 |
|||
|
|||
### Added in 0.1.6 |
|||
|
|||
- Infinite scroll on home page |
|||
|
|||
### Changed in 0.1.6 |
|||
|
|||
- UI improvements |
|||
- Show web-push subscription info |
|||
- Icon |
|||
|
|||
## [0.1.5] - 2023.12.09 - 9c36bb509a9bae9bb3306d3bd9eeb144b67aa8ad |
|||
|
|||
### Added in 0.1.5 |
|||
|
|||
- Web push notifications (though not finalized) |
|||
- Credentials details page |
|||
- See more data without an ID |
|||
- Change units of a give |
|||
|
|||
## [0.1.4] - 2023.11.20 - 7311d36726f3667ec4c68f241f91d404273ad4db |
|||
|
|||
### Added in 0.1.4 |
|||
|
|||
- Offer on a project |
|||
|
|||
### Changed in 0.1.4 |
|||
|
|||
- Automatically set as visible when importing a contact |
|||
|
|||
## [0.1.3] - 2023.11.08 - 910f57ec7d2e50803ae3d04f4b927e0f5219fbde |
|||
|
|||
### Added in 0.1.3 |
|||
|
|||
- Contact name editing |
|||
|
|||
### Changed in 0.1.3 |
|||
|
|||
- Don't show actions on front page if not registered. |
|||
|
|||
### Removed in 0.1.3 |
|||
|
|||
- Home page Notiwind test buttons |
|||
|
|||
## [0.1.2] - 2023.11.01 - 7f6c93802911a030a89fe3706e18b5c17151e5bb |
|||
|
|||
### Added in 0.1.2 |
|||
|
|||
- Basics: create ID, record a give, declare a project, search, and get notifications. |
@ -1,11 +0,0 @@ |
|||
# Contributing |
|||
|
|||
Welcome! We are happy to have your help with this project. |
|||
|
|||
We expect contributions to include automated tests and pass linting. Run the `test-all` task. |
|||
Note that some previous features don't have tests and adding more will make you friends quick. |
|||
|
|||
Note that all contributions will be under our [license, modeled after SQLite](https://github.com/trentlarson/endorser-ch/blob/master/LICENSE). |
|||
|
|||
If you want to see a code of conduct, we're probably not the people you want to hang with. |
|||
Basically, we'll work together as long as we both enjoy it, and we'll stop when that stops. |
@ -1,5 +0,0 @@ |
|||
source "https://rubygems.org" |
|||
|
|||
gem "fastlane" |
|||
gem "cocoapods" |
|||
|
@ -1,321 +0,0 @@ |
|||
GEM |
|||
remote: https://rubygems.org/ |
|||
specs: |
|||
CFPropertyList (3.0.7) |
|||
base64 |
|||
nkf |
|||
rexml |
|||
activesupport (7.2.2.1) |
|||
base64 |
|||
benchmark (>= 0.3) |
|||
bigdecimal |
|||
concurrent-ruby (~> 1.0, >= 1.3.1) |
|||
connection_pool (>= 2.2.5) |
|||
drb |
|||
i18n (>= 1.6, < 2) |
|||
logger (>= 1.4.2) |
|||
minitest (>= 5.1) |
|||
securerandom (>= 0.3) |
|||
tzinfo (~> 2.0, >= 2.0.5) |
|||
addressable (2.8.7) |
|||
public_suffix (>= 2.0.2, < 7.0) |
|||
algoliasearch (1.27.5) |
|||
httpclient (~> 2.8, >= 2.8.3) |
|||
json (>= 1.5.1) |
|||
artifactory (3.0.17) |
|||
atomos (0.1.3) |
|||
aws-eventstream (1.3.2) |
|||
aws-partitions (1.1066.0) |
|||
aws-sdk-core (3.220.1) |
|||
aws-eventstream (~> 1, >= 1.3.0) |
|||
aws-partitions (~> 1, >= 1.992.0) |
|||
aws-sigv4 (~> 1.9) |
|||
base64 |
|||
jmespath (~> 1, >= 1.6.1) |
|||
aws-sdk-kms (1.99.0) |
|||
aws-sdk-core (~> 3, >= 3.216.0) |
|||
aws-sigv4 (~> 1.5) |
|||
aws-sdk-s3 (1.182.0) |
|||
aws-sdk-core (~> 3, >= 3.216.0) |
|||
aws-sdk-kms (~> 1) |
|||
aws-sigv4 (~> 1.5) |
|||
aws-sigv4 (1.11.0) |
|||
aws-eventstream (~> 1, >= 1.0.2) |
|||
babosa (1.0.4) |
|||
base64 (0.2.0) |
|||
benchmark (0.4.0) |
|||
bigdecimal (3.1.9) |
|||
claide (1.1.0) |
|||
cocoapods (1.16.2) |
|||
addressable (~> 2.8) |
|||
claide (>= 1.0.2, < 2.0) |
|||
cocoapods-core (= 1.16.2) |
|||
cocoapods-deintegrate (>= 1.0.3, < 2.0) |
|||
cocoapods-downloader (>= 2.1, < 3.0) |
|||
cocoapods-plugins (>= 1.0.0, < 2.0) |
|||
cocoapods-search (>= 1.0.0, < 2.0) |
|||
cocoapods-trunk (>= 1.6.0, < 2.0) |
|||
cocoapods-try (>= 1.1.0, < 2.0) |
|||
colored2 (~> 3.1) |
|||
escape (~> 0.0.4) |
|||
fourflusher (>= 2.3.0, < 3.0) |
|||
gh_inspector (~> 1.0) |
|||
molinillo (~> 0.8.0) |
|||
nap (~> 1.0) |
|||
ruby-macho (>= 2.3.0, < 3.0) |
|||
xcodeproj (>= 1.27.0, < 2.0) |
|||
cocoapods-core (1.16.2) |
|||
activesupport (>= 5.0, < 8) |
|||
addressable (~> 2.8) |
|||
algoliasearch (~> 1.0) |
|||
concurrent-ruby (~> 1.1) |
|||
fuzzy_match (~> 2.0.4) |
|||
nap (~> 1.0) |
|||
netrc (~> 0.11) |
|||
public_suffix (~> 4.0) |
|||
typhoeus (~> 1.0) |
|||
cocoapods-deintegrate (1.0.5) |
|||
cocoapods-downloader (2.1) |
|||
cocoapods-plugins (1.0.0) |
|||
nap |
|||
cocoapods-search (1.0.1) |
|||
cocoapods-trunk (1.6.0) |
|||
nap (>= 0.8, < 2.0) |
|||
netrc (~> 0.11) |
|||
cocoapods-try (1.2.0) |
|||
colored (1.2) |
|||
colored2 (3.1.2) |
|||
commander (4.6.0) |
|||
highline (~> 2.0.0) |
|||
concurrent-ruby (1.3.5) |
|||
connection_pool (2.5.0) |
|||
declarative (0.0.20) |
|||
digest-crc (0.7.0) |
|||
rake (>= 12.0.0, < 14.0.0) |
|||
domain_name (0.6.20240107) |
|||
dotenv (2.8.1) |
|||
drb (2.2.1) |
|||
emoji_regex (3.2.3) |
|||
escape (0.0.4) |
|||
ethon (0.16.0) |
|||
ffi (>= 1.15.0) |
|||
excon (0.112.0) |
|||
faraday (1.10.4) |
|||
faraday-em_http (~> 1.0) |
|||
faraday-em_synchrony (~> 1.0) |
|||
faraday-excon (~> 1.1) |
|||
faraday-httpclient (~> 1.0) |
|||
faraday-multipart (~> 1.0) |
|||
faraday-net_http (~> 1.0) |
|||
faraday-net_http_persistent (~> 1.0) |
|||
faraday-patron (~> 1.0) |
|||
faraday-rack (~> 1.0) |
|||
faraday-retry (~> 1.0) |
|||
ruby2_keywords (>= 0.0.4) |
|||
faraday-cookie_jar (0.0.7) |
|||
faraday (>= 0.8.0) |
|||
http-cookie (~> 1.0.0) |
|||
faraday-em_http (1.0.0) |
|||
faraday-em_synchrony (1.0.0) |
|||
faraday-excon (1.1.0) |
|||
faraday-httpclient (1.0.1) |
|||
faraday-multipart (1.1.0) |
|||
multipart-post (~> 2.0) |
|||
faraday-net_http (1.0.2) |
|||
faraday-net_http_persistent (1.2.0) |
|||
faraday-patron (1.0.0) |
|||
faraday-rack (1.0.0) |
|||
faraday-retry (1.0.3) |
|||
faraday_middleware (1.2.1) |
|||
faraday (~> 1.0) |
|||
fastimage (2.4.0) |
|||
fastlane (2.227.0) |
|||
CFPropertyList (>= 2.3, < 4.0.0) |
|||
addressable (>= 2.8, < 3.0.0) |
|||
artifactory (~> 3.0) |
|||
aws-sdk-s3 (~> 1.0) |
|||
babosa (>= 1.0.3, < 2.0.0) |
|||
bundler (>= 1.12.0, < 3.0.0) |
|||
colored (~> 1.2) |
|||
commander (~> 4.6) |
|||
dotenv (>= 2.1.1, < 3.0.0) |
|||
emoji_regex (>= 0.1, < 4.0) |
|||
excon (>= 0.71.0, < 1.0.0) |
|||
faraday (~> 1.0) |
|||
faraday-cookie_jar (~> 0.0.6) |
|||
faraday_middleware (~> 1.0) |
|||
fastimage (>= 2.1.0, < 3.0.0) |
|||
fastlane-sirp (>= 1.0.0) |
|||
gh_inspector (>= 1.1.2, < 2.0.0) |
|||
google-apis-androidpublisher_v3 (~> 0.3) |
|||
google-apis-playcustomapp_v1 (~> 0.1) |
|||
google-cloud-env (>= 1.6.0, < 2.0.0) |
|||
google-cloud-storage (~> 1.31) |
|||
highline (~> 2.0) |
|||
http-cookie (~> 1.0.5) |
|||
json (< 3.0.0) |
|||
jwt (>= 2.1.0, < 3) |
|||
mini_magick (>= 4.9.4, < 5.0.0) |
|||
multipart-post (>= 2.0.0, < 3.0.0) |
|||
naturally (~> 2.2) |
|||
optparse (>= 0.1.1, < 1.0.0) |
|||
plist (>= 3.1.0, < 4.0.0) |
|||
rubyzip (>= 2.0.0, < 3.0.0) |
|||
security (= 0.1.5) |
|||
simctl (~> 1.6.3) |
|||
terminal-notifier (>= 2.0.0, < 3.0.0) |
|||
terminal-table (~> 3) |
|||
tty-screen (>= 0.6.3, < 1.0.0) |
|||
tty-spinner (>= 0.8.0, < 1.0.0) |
|||
word_wrap (~> 1.0.0) |
|||
xcodeproj (>= 1.13.0, < 2.0.0) |
|||
xcpretty (~> 0.4.0) |
|||
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) |
|||
fastlane-sirp (1.0.0) |
|||
sysrandom (~> 1.0) |
|||
ffi (1.17.1) |
|||
ffi (1.17.1-aarch64-linux-gnu) |
|||
ffi (1.17.1-aarch64-linux-musl) |
|||
ffi (1.17.1-arm-linux-gnu) |
|||
ffi (1.17.1-arm-linux-musl) |
|||
ffi (1.17.1-arm64-darwin) |
|||
ffi (1.17.1-x86-linux-gnu) |
|||
ffi (1.17.1-x86-linux-musl) |
|||
ffi (1.17.1-x86_64-darwin) |
|||
ffi (1.17.1-x86_64-linux-gnu) |
|||
ffi (1.17.1-x86_64-linux-musl) |
|||
fourflusher (2.3.1) |
|||
fuzzy_match (2.0.4) |
|||
gh_inspector (1.1.3) |
|||
google-apis-androidpublisher_v3 (0.54.0) |
|||
google-apis-core (>= 0.11.0, < 2.a) |
|||
google-apis-core (0.11.3) |
|||
addressable (~> 2.5, >= 2.5.1) |
|||
googleauth (>= 0.16.2, < 2.a) |
|||
httpclient (>= 2.8.1, < 3.a) |
|||
mini_mime (~> 1.0) |
|||
representable (~> 3.0) |
|||
retriable (>= 2.0, < 4.a) |
|||
rexml |
|||
google-apis-iamcredentials_v1 (0.17.0) |
|||
google-apis-core (>= 0.11.0, < 2.a) |
|||
google-apis-playcustomapp_v1 (0.13.0) |
|||
google-apis-core (>= 0.11.0, < 2.a) |
|||
google-apis-storage_v1 (0.31.0) |
|||
google-apis-core (>= 0.11.0, < 2.a) |
|||
google-cloud-core (1.8.0) |
|||
google-cloud-env (>= 1.0, < 3.a) |
|||
google-cloud-errors (~> 1.0) |
|||
google-cloud-env (1.6.0) |
|||
faraday (>= 0.17.3, < 3.0) |
|||
google-cloud-errors (1.5.0) |
|||
google-cloud-storage (1.47.0) |
|||
addressable (~> 2.8) |
|||
digest-crc (~> 0.4) |
|||
google-apis-iamcredentials_v1 (~> 0.1) |
|||
google-apis-storage_v1 (~> 0.31.0) |
|||
google-cloud-core (~> 1.6) |
|||
googleauth (>= 0.16.2, < 2.a) |
|||
mini_mime (~> 1.0) |
|||
googleauth (1.8.1) |
|||
faraday (>= 0.17.3, < 3.a) |
|||
jwt (>= 1.4, < 3.0) |
|||
multi_json (~> 1.11) |
|||
os (>= 0.9, < 2.0) |
|||
signet (>= 0.16, < 2.a) |
|||
highline (2.0.3) |
|||
http-cookie (1.0.8) |
|||
domain_name (~> 0.5) |
|||
httpclient (2.9.0) |
|||
mutex_m |
|||
i18n (1.14.7) |
|||
concurrent-ruby (~> 1.0) |
|||
jmespath (1.6.2) |
|||
json (2.10.2) |
|||
jwt (2.10.1) |
|||
base64 |
|||
logger (1.6.6) |
|||
mini_magick (4.13.2) |
|||
mini_mime (1.1.5) |
|||
minitest (5.25.5) |
|||
molinillo (0.8.0) |
|||
multi_json (1.15.0) |
|||
multipart-post (2.4.1) |
|||
mutex_m (0.3.0) |
|||
nanaimo (0.4.0) |
|||
nap (1.1.0) |
|||
naturally (2.2.1) |
|||
netrc (0.11.0) |
|||
nkf (0.2.0) |
|||
optparse (0.6.0) |
|||
os (1.1.4) |
|||
plist (3.7.2) |
|||
public_suffix (4.0.7) |
|||
rake (13.2.1) |
|||
representable (3.2.0) |
|||
declarative (< 0.1.0) |
|||
trailblazer-option (>= 0.1.1, < 0.2.0) |
|||
uber (< 0.2.0) |
|||
retriable (3.1.2) |
|||
rexml (3.4.1) |
|||
rouge (3.28.0) |
|||
ruby-macho (2.5.1) |
|||
ruby2_keywords (0.0.5) |
|||
rubyzip (2.4.1) |
|||
securerandom (0.4.1) |
|||
security (0.1.5) |
|||
signet (0.19.0) |
|||
addressable (~> 2.8) |
|||
faraday (>= 0.17.5, < 3.a) |
|||
jwt (>= 1.5, < 3.0) |
|||
multi_json (~> 1.10) |
|||
simctl (1.6.10) |
|||
CFPropertyList |
|||
naturally |
|||
sysrandom (1.0.5) |
|||
terminal-notifier (2.0.0) |
|||
terminal-table (3.0.2) |
|||
unicode-display_width (>= 1.1.1, < 3) |
|||
trailblazer-option (0.1.2) |
|||
tty-cursor (0.7.1) |
|||
tty-screen (0.8.2) |
|||
tty-spinner (0.9.3) |
|||
tty-cursor (~> 0.7) |
|||
typhoeus (1.4.1) |
|||
ethon (>= 0.9.0) |
|||
tzinfo (2.0.6) |
|||
concurrent-ruby (~> 1.0) |
|||
uber (0.1.0) |
|||
unicode-display_width (2.6.0) |
|||
word_wrap (1.0.0) |
|||
xcodeproj (1.27.0) |
|||
CFPropertyList (>= 2.3.3, < 4.0) |
|||
atomos (~> 0.1.3) |
|||
claide (>= 1.0.2, < 2.0) |
|||
colored2 (~> 3.1) |
|||
nanaimo (~> 0.4.0) |
|||
rexml (>= 3.3.6, < 4.0) |
|||
xcpretty (0.4.0) |
|||
rouge (~> 3.28.0) |
|||
xcpretty-travis-formatter (1.0.1) |
|||
xcpretty (~> 0.2, >= 0.0.7) |
|||
|
|||
PLATFORMS |
|||
aarch64-linux-gnu |
|||
aarch64-linux-musl |
|||
arm-linux-gnu |
|||
arm-linux-musl |
|||
arm64-darwin |
|||
ruby |
|||
x86-linux-gnu |
|||
x86-linux-musl |
|||
x86_64-darwin |
|||
x86_64-linux-gnu |
|||
x86_64-linux-musl |
|||
|
|||
DEPENDENCIES |
|||
cocoapods |
|||
fastlane |
|||
|
|||
BUNDLED WITH |
|||
2.6.5 |
@ -1,8 +0,0 @@ |
|||
The author disclaims copyright to this source code. In place of a legal notice, here is a blessing: |
|||
|
|||
May you do good and not evil. |
|||
May you find forgiveness for yourself and forgive others. |
|||
May you share freely, never taking more than you give. |
|||
|
|||
________________________________________________________________ |
|||
from https://www.sqlite.org/src/info/689401a6cfb4c234 and memorialized here https://spdx.org/licenses/blessing.html |
@ -1,111 +1,18 @@ |
|||
# TimeSafari.app - Crowd-Funder for Time - PWA |
|||
# Vue 3 + TypeScript + Vite |
|||
|
|||
[Time Safari](https://timesafari.org/) allows people to ease into collaboration: start with expressions of gratitude |
|||
and expand to crowd-fund with time & money, then record and see the impact of contributions. |
|||
This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more. |
|||
|
|||
## Roadmap |
|||
## Recommended IDE Setup |
|||
|
|||
See [project.task.yaml](project.task.yaml) for current priorities. |
|||
(Numbers at the beginning of lines are estimated hours. See [taskyaml.org](https://taskyaml.org/) for details.) |
|||
- [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). |
|||
|
|||
## Setup & Building |
|||
## Type Support For `.vue` Imports in TS |
|||
|
|||
Quick start: |
|||
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types. |
|||
|
|||
```bash |
|||
npm install |
|||
npm run dev |
|||
``` |
|||
If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps: |
|||
|
|||
See [BUILDING.md](BUILDING.md) for more details. |
|||
|
|||
See the test locations for "IMAGE_API_SERVER" or "PARTNER_API_SERVER" below, or use http://localhost:3000 for local endorser.ch |
|||
|
|||
|
|||
### Run all UI tests |
|||
|
|||
Look at [BUILDING.md](BUILDING.md) for the "test-all" instructions and [TESTING.md](test-playwright/TESTING.md) for more details. |
|||
|
|||
|
|||
### Compile and minify for test & production |
|||
|
|||
* If there are DB changes: before updating the test server, open browser(s) with current version to test DB migrations. |
|||
|
|||
* `npx prettier --write ./sw_scripts/` |
|||
|
|||
* Update the ClickUp tasks & CHANGELOG.md & the version in package.json, run `npm install`. |
|||
|
|||
* Commit everything (since the commit hash is used the app). |
|||
|
|||
* Put the commit hash in the changelog (which will help you remember to bump the version later). |
|||
|
|||
* Tag with the new version, [online](https://gitea.anomalistdesign.com/trent_larson/crowd-funder-for-time-pwa/releases) or `git tag 0.3.55 && git push origin 0.3.55`. |
|||
|
|||
* For test, build the app (because test server is not yet set up to build): |
|||
|
|||
```bash |
|||
TIME_SAFARI_APP_TITLE="TimeSafari_Test" VITE_APP_SERVER=https://test.timesafari.app VITE_BVC_MEETUPS_PROJECT_CLAIM_ID=https://endorser.ch/entity/01HWE8FWHQ1YGP7GFZYYPS272F VITE_DEFAULT_ENDORSER_API_SERVER=https://test-api.endorser.ch VITE_DEFAULT_IMAGE_API_SERVER=https://test-image-api.timesafari.app VITE_DEFAULT_PARTNER_API_SERVER=https://test-partner-api.endorser.ch VITE_PASSKEYS_ENABLED=true npm run build |
|||
``` |
|||
|
|||
... and transfer to the test server: |
|||
|
|||
```bash |
|||
rsync -azvu -e "ssh -i ~/.ssh/..." dist ubuntutest@test.timesafari.app:time-safari |
|||
``` |
|||
|
|||
(Let's replace that with a .env.development or .env.staging file.) |
|||
|
|||
(Note: The test BVC_MEETUPS_PROJECT_CLAIM_ID does not resolve as a URL because it's only in the test DB and the prod redirect won't redirect there.) |
|||
|
|||
* For prod, get on the server and run the correct build: |
|||
|
|||
... and log onto the server: |
|||
|
|||
* `pkgx +npm sh` |
|||
|
|||
* `cd crowd-funder-for-time-pwa && git checkout master && git pull && git checkout 0.3.55 && npm install && npm run build && cd -` |
|||
|
|||
(The plain `npm run build` uses the .env.production file.) |
|||
|
|||
* Back up the time-safari/dist folder & deploy: `mv time-safari/dist time-safari-dist-prev.0 && mv crowd-funder-for-time-pwa/dist time-safari/` |
|||
|
|||
* Record the new hash in the changelog. Edit package.json to increment version & add "-beta", `npm install`, and commit. Also record what version is on production. |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
## Tests |
|||
|
|||
See [TESTING.md](test-playwright/TESTING.md) for detailed test instructions. |
|||
|
|||
|
|||
|
|||
|
|||
## Icons |
|||
|
|||
To add an icon, add to main.ts and reference with `fa` element and `icon` attribute with the hyphenated name. |
|||
|
|||
## Other |
|||
|
|||
### Reference Material |
|||
|
|||
* Notifications can be type of `toast` (self-dismiss), `info`, `success`, `warning`, and `danger`. |
|||
They are done via [notiwind](https://www.npmjs.com/package/notiwind) and set up in App.vue. |
|||
|
|||
* [Customize Vue configuration](https://cli.vuejs.org/config/). |
|||
|
|||
* If you are deploying in a subdirectory, add it to `publicPath` in vue.config.js, eg: `publicPath: "/app/time-tracker/",` |
|||
|
|||
### Kudos |
|||
|
|||
Gifts make the world go 'round! |
|||
|
|||
* [WebStorm by JetBrains](https://www.jetbrains.com/webstorm/) for the free open-source license |
|||
* [Máximo Fernández](https://medium.com/@maxfarenas) for the 3D [code](https://github.com/maxfer03/vue-three-ns) and [explanatory post](https://medium.com/nicasource/building-an-interactive-web-portfolio-with-vue-three-js-part-three-implementing-three-js-452cb375ef80) |
|||
* [Many tools & libraries](https://gitea.anomalistdesign.com/trent_larson/crowd-funder-for-time-pwa/src/branch/master/package.json#L10) such as Nodejs.org, IntelliJ Idea, Veramo.io, Vuejs.org, threejs.org |
|||
* [Bush 3D model](https://sketchfab.com/3d-models/lupine-plant-bf30f1110c174d4baedda0ed63778439) |
|||
* [Forest floor image](https://www.goodfreephotos.com/albums/textures/leafy-autumn-forest-floor.jpg) |
|||
* Time Safari logo assisted by [DALL-E in ChatGPT](https://chat.openai.com/g/g-2fkFE8rbu-dall-e) |
|||
* [DiceBear](https://www.dicebear.com/licenses/) and [Avataaars](https://www.dicebear.com/styles/avataaars/#details) for human-looking identicons |
|||
* Some gratitude prompts thanks to [Develop Good Habits](https://www.developgoodhabits.com/gratitude-journal-prompts/) |
|||
1. Disable the built-in TypeScript Extension |
|||
1. Run `Extensions: Show Built-in Extensions` from VSCode's command palette |
|||
2. Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)` |
|||
2. Reload the VSCode window by running `Developer: Reload Window` from the command palette. |
|||
|
@ -1,101 +0,0 @@ |
|||
# Using Android gitignore template: https://github.com/github/gitignore/blob/HEAD/Android.gitignore |
|||
|
|||
# Built application files |
|||
*.apk |
|||
*.aar |
|||
*.ap_ |
|||
*.aab |
|||
|
|||
# Files for the ART/Dalvik VM |
|||
*.dex |
|||
|
|||
# Java class files |
|||
*.class |
|||
|
|||
# Generated files |
|||
bin/ |
|||
gen/ |
|||
out/ |
|||
# Uncomment the following line in case you need and you don't have the release build type files in your app |
|||
# release/ |
|||
|
|||
# Gradle files |
|||
.gradle/ |
|||
build/ |
|||
|
|||
# Local configuration file (sdk path, etc) |
|||
local.properties |
|||
|
|||
# Proguard folder generated by Eclipse |
|||
proguard/ |
|||
|
|||
# Log Files |
|||
*.log |
|||
|
|||
# Android Studio Navigation editor temp files |
|||
.navigation/ |
|||
|
|||
# Android Studio captures folder |
|||
captures/ |
|||
|
|||
# IntelliJ |
|||
*.iml |
|||
.idea/workspace.xml |
|||
.idea/tasks.xml |
|||
.idea/gradle.xml |
|||
.idea/assetWizardSettings.xml |
|||
.idea/dictionaries |
|||
.idea/libraries |
|||
# Android Studio 3 in .gitignore file. |
|||
.idea/caches |
|||
.idea/modules.xml |
|||
# Comment next line if keeping position of elements in Navigation Editor is relevant for you |
|||
.idea/navEditor.xml |
|||
|
|||
# Keystore files |
|||
# Uncomment the following lines if you do not want to check your keystore files in. |
|||
#*.jks |
|||
#*.keystore |
|||
|
|||
# External native build folder generated in Android Studio 2.2 and later |
|||
.externalNativeBuild |
|||
.cxx/ |
|||
|
|||
# Google Services (e.g. APIs or Firebase) |
|||
# google-services.json |
|||
|
|||
# Freeline |
|||
freeline.py |
|||
freeline/ |
|||
freeline_project_description.json |
|||
|
|||
# fastlane |
|||
fastlane/report.xml |
|||
fastlane/Preview.html |
|||
fastlane/screenshots |
|||
fastlane/test_output |
|||
fastlane/readme.md |
|||
|
|||
# Version control |
|||
vcs.xml |
|||
|
|||
# lint |
|||
lint/intermediates/ |
|||
lint/generated/ |
|||
lint/outputs/ |
|||
lint/tmp/ |
|||
# lint/reports/ |
|||
|
|||
# Android Profiling |
|||
*.hprof |
|||
|
|||
# Cordova plugins for Capacitor |
|||
capacitor-cordova-android-plugins |
|||
|
|||
# Copied web assets |
|||
app/src/main/assets/public |
|||
|
|||
# Generated Config files |
|||
app/src/main/assets/capacitor.config.json |
|||
app/src/main/assets/capacitor.plugins.json |
|||
app/src/main/res/xml/config.xml |
@ -1,2 +0,0 @@ |
|||
#Fri Mar 21 07:27:50 UTC 2025 |
|||
gradle.version=8.2.1 |
@ -1,2 +0,0 @@ |
|||
/build/* |
|||
!/build/.npmkeep |
@ -1,54 +0,0 @@ |
|||
apply plugin: 'com.android.application' |
|||
|
|||
android { |
|||
namespace 'app.timesafari' |
|||
compileSdk rootProject.ext.compileSdkVersion |
|||
defaultConfig { |
|||
applicationId "app.timesafari" |
|||
minSdkVersion rootProject.ext.minSdkVersion |
|||
targetSdkVersion rootProject.ext.targetSdkVersion |
|||
versionCode 1 |
|||
versionName "1.0" |
|||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" |
|||
aaptOptions { |
|||
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. |
|||
// Default: https://android.googlesource.com/platform/frameworks/base/+/282e181b58cf72b6ca770dc7ca5f91f135444502/tools/aapt/AaptAssets.cpp#61 |
|||
ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~' |
|||
} |
|||
} |
|||
buildTypes { |
|||
release { |
|||
minifyEnabled false |
|||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' |
|||
} |
|||
} |
|||
} |
|||
|
|||
repositories { |
|||
flatDir{ |
|||
dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs' |
|||
} |
|||
} |
|||
|
|||
dependencies { |
|||
implementation fileTree(include: ['*.jar'], dir: 'libs') |
|||
implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion" |
|||
implementation "androidx.coordinatorlayout:coordinatorlayout:$androidxCoordinatorLayoutVersion" |
|||
implementation "androidx.core:core-splashscreen:$coreSplashScreenVersion" |
|||
implementation project(':capacitor-android') |
|||
testImplementation "junit:junit:$junitVersion" |
|||
androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion" |
|||
androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion" |
|||
implementation project(':capacitor-cordova-android-plugins') |
|||
} |
|||
|
|||
apply from: 'capacitor.build.gradle' |
|||
|
|||
try { |
|||
def servicesJSON = file('google-services.json') |
|||
if (servicesJSON.text) { |
|||
apply plugin: 'com.google.gms.google-services' |
|||
} |
|||
} catch(Exception e) { |
|||
logger.info("google-services.json not found, google-services plugin not applied. Push Notifications won't work") |
|||
} |
@ -1,19 +0,0 @@ |
|||
// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN |
|||
|
|||
android { |
|||
compileOptions { |
|||
sourceCompatibility JavaVersion.VERSION_17 |
|||
targetCompatibility JavaVersion.VERSION_17 |
|||
} |
|||
} |
|||
|
|||
apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle" |
|||
dependencies { |
|||
implementation project(':capacitor-app') |
|||
|
|||
} |
|||
|
|||
|
|||
if (hasProperty('postBuildExtras')) { |
|||
postBuildExtras() |
|||
} |
@ -1,21 +0,0 @@ |
|||
# Add project specific ProGuard rules here. |
|||
# You can control the set of applied configuration files using the |
|||
# proguardFiles setting in build.gradle. |
|||
# |
|||
# For more details, see |
|||
# http://developer.android.com/guide/developing/tools/proguard.html |
|||
|
|||
# If your project uses WebView with JS, uncomment the following |
|||
# and specify the fully qualified class name to the JavaScript interface |
|||
# class: |
|||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { |
|||
# public *; |
|||
#} |
|||
|
|||
# Uncomment this to preserve the line number information for |
|||
# debugging stack traces. |
|||
#-keepattributes SourceFile,LineNumberTable |
|||
|
|||
# If you keep the line number information, uncomment this to |
|||
# hide the original source file name. |
|||
#-renamesourcefileattribute SourceFile |
@ -1,26 +0,0 @@ |
|||
package com.getcapacitor.myapp; |
|||
|
|||
import static org.junit.Assert.*; |
|||
|
|||
import android.content.Context; |
|||
import androidx.test.ext.junit.runners.AndroidJUnit4; |
|||
import androidx.test.platform.app.InstrumentationRegistry; |
|||
import org.junit.Test; |
|||
import org.junit.runner.RunWith; |
|||
|
|||
/** |
|||
* Instrumented test, which will execute on an Android device. |
|||
* |
|||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a> |
|||
*/ |
|||
@RunWith(AndroidJUnit4.class) |
|||
public class ExampleInstrumentedTest { |
|||
|
|||
@Test |
|||
public void useAppContext() throws Exception { |
|||
// Context of the app under test.
|
|||
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); |
|||
|
|||
assertEquals("app.timesafari", appContext.getPackageName()); |
|||
} |
|||
} |
@ -1,48 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> |
|||
|
|||
<application |
|||
android:allowBackup="true" |
|||
android:icon="@mipmap/ic_launcher" |
|||
android:label="@string/app_name" |
|||
android:roundIcon="@mipmap/ic_launcher_round" |
|||
android:supportsRtl="true" |
|||
android:theme="@style/AppTheme"> |
|||
|
|||
<activity |
|||
android:name=".MainActivity" |
|||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode" |
|||
android:exported="true" |
|||
android:label="@string/title_activity_main" |
|||
android:launchMode="singleTask" |
|||
android:theme="@style/AppTheme.NoActionBarLaunch"> |
|||
|
|||
<intent-filter> |
|||
<action android:name="android.intent.action.MAIN" /> |
|||
<category android:name="android.intent.category.LAUNCHER" /> |
|||
</intent-filter> |
|||
|
|||
<intent-filter> |
|||
<action android:name="android.intent.action.VIEW" /> |
|||
<category android:name="android.intent.category.DEFAULT" /> |
|||
<category android:name="android.intent.category.BROWSABLE" /> |
|||
<data android:scheme="timesafari" /> |
|||
</intent-filter> |
|||
|
|||
</activity> |
|||
|
|||
<provider |
|||
android:name="androidx.core.content.FileProvider" |
|||
android:authorities="${applicationId}.fileprovider" |
|||
android:exported="false" |
|||
android:grantUriPermissions="true"> |
|||
<meta-data |
|||
android:name="android.support.FILE_PROVIDER_PATHS" |
|||
android:resource="@xml/file_paths"></meta-data> |
|||
</provider> |
|||
</application> |
|||
|
|||
<!-- Permissions --> |
|||
|
|||
<uses-permission android:name="android.permission.INTERNET" /> |
|||
</manifest> |
@ -1,21 +0,0 @@ |
|||
{ |
|||
"appId": "app.timesafari", |
|||
"appName": "TimeSafari", |
|||
"webDir": "dist", |
|||
"bundledWebRuntime": false, |
|||
"server": { |
|||
"cleartext": true |
|||
}, |
|||
"plugins": { |
|||
"App": { |
|||
"appUrlOpen": { |
|||
"handlers": [ |
|||
{ |
|||
"url": "timesafari://*", |
|||
"autoVerify": true |
|||
} |
|||
] |
|||
} |
|||
} |
|||
} |
|||
} |
@ -1,6 +0,0 @@ |
|||
[ |
|||
{ |
|||
"pkg": "@capacitor/app", |
|||
"classpath": "com.capacitorjs.plugins.app.AppPlugin" |
|||
} |
|||
] |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 270 KiB |
Before Width: | Height: | Size: 332 KiB |
Before Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 463 KiB |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 150 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 705 KiB |
@ -1,17 +0,0 @@ |
|||
<!DOCTYPE html> |
|||
<html lang=""> |
|||
<head> |
|||
<meta charset="utf-8"> |
|||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
|||
<meta name="viewport" content="width=device-width,initial-scale=1.0"> |
|||
<link rel="icon" href="/favicon.ico"> |
|||
<title>TimeSafari</title> |
|||
<script type="module" crossorigin src="/assets/index-CZMUlUNO.js"></script> |
|||
</head> |
|||
<body> |
|||
<noscript> |
|||
<strong>We're sorry but TimeSafari doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> |
|||
</noscript> |
|||
<div id="app"></div> |
|||
</body> |
|||
</html> |
@ -1,11 +0,0 @@ |
|||
Model Information: |
|||
* title: Lupine Plant |
|||
* source: https://sketchfab.com/3d-models/lupine-plant-bf30f1110c174d4baedda0ed63778439 |
|||
* author: rufusrockwell (https://sketchfab.com/rufusrockwell) |
|||
|
|||
Model License: |
|||
* license type: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) |
|||
* requirements: Author must be credited. Commercial use is allowed. |
|||
|
|||
If you use this 3D model in your project be sure to copy paste this credit wherever you share it: |
|||
This work is based on "Lupine Plant" (https://sketchfab.com/3d-models/lupine-plant-bf30f1110c174d4baedda0ed63778439) by rufusrockwell (https://sketchfab.com/rufusrockwell) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) |
@ -1,229 +0,0 @@ |
|||
{ |
|||
"accessors": [ |
|||
{ |
|||
"bufferView": 2, |
|||
"componentType": 5126, |
|||
"count": 2759, |
|||
"max": [ |
|||
41.3074951171875, |
|||
40.37548828125, |
|||
87.85917663574219 |
|||
], |
|||
"min": [ |
|||
-35.245540618896484, |
|||
-36.895416259765625, |
|||
-0.9094290137290955 |
|||
], |
|||
"type": "VEC3" |
|||
}, |
|||
{ |
|||
"bufferView": 2, |
|||
"byteOffset": 33108, |
|||
"componentType": 5126, |
|||
"count": 2759, |
|||
"max": [ |
|||
0.9999382495880127, |
|||
0.9986748695373535, |
|||
0.9985831379890442 |
|||
], |
|||
"min": [ |
|||
-0.9998949766159058, |
|||
-0.9975876212120056, |
|||
-0.411094069480896 |
|||
], |
|||
"type": "VEC3" |
|||
}, |
|||
{ |
|||
"bufferView": 3, |
|||
"componentType": 5126, |
|||
"count": 2759, |
|||
"max": [ |
|||
0.9987699389457703, |
|||
0.9998998045921326, |
|||
0.9577858448028564, |
|||
1.0 |
|||
], |
|||
"min": [ |
|||
-0.9987726807594299, |
|||
-0.9990445971488953, |
|||
-0.999801516532898, |
|||
1.0 |
|||
], |
|||
"type": "VEC4" |
|||
}, |
|||
{ |
|||
"bufferView": 1, |
|||
"componentType": 5126, |
|||
"count": 2759, |
|||
"max": [ |
|||
1.0061479806900024, |
|||
0.9993550181388855 |
|||
], |
|||
"min": [ |
|||
0.00279300007969141, |
|||
0.0011620000004768372 |
|||
], |
|||
"type": "VEC2" |
|||
}, |
|||
{ |
|||
"bufferView": 0, |
|||
"componentType": 5125, |
|||
"count": 6378, |
|||
"type": "SCALAR" |
|||
} |
|||
], |
|||
"asset": { |
|||
"extras": { |
|||
"author": "rufusrockwell (https://sketchfab.com/rufusrockwell)", |
|||
"license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", |
|||
"source": "https://sketchfab.com/3d-models/lupine-plant-bf30f1110c174d4baedda0ed63778439", |
|||
"title": "Lupine Plant" |
|||
}, |
|||
"generator": "Sketchfab-12.68.0", |
|||
"version": "2.0" |
|||
}, |
|||
"bufferViews": [ |
|||
{ |
|||
"buffer": 0, |
|||
"byteLength": 25512, |
|||
"name": "floatBufferViews", |
|||
"target": 34963 |
|||
}, |
|||
{ |
|||
"buffer": 0, |
|||
"byteLength": 22072, |
|||
"byteOffset": 25512, |
|||
"byteStride": 8, |
|||
"name": "floatBufferViews", |
|||
"target": 34962 |
|||
}, |
|||
{ |
|||
"buffer": 0, |
|||
"byteLength": 66216, |
|||
"byteOffset": 47584, |
|||
"byteStride": 12, |
|||
"name": "floatBufferViews", |
|||
"target": 34962 |
|||
}, |
|||
{ |
|||
"buffer": 0, |
|||
"byteLength": 44144, |
|||
"byteOffset": 113800, |
|||
"byteStride": 16, |
|||
"name": "floatBufferViews", |
|||
"target": 34962 |
|||
} |
|||
], |
|||
"buffers": [ |
|||
{ |
|||
"byteLength": 157944, |
|||
"uri": "scene.bin" |
|||
} |
|||
], |
|||
"images": [ |
|||
{ |
|||
"uri": "textures/lambert2SG_baseColor.png" |
|||
}, |
|||
{ |
|||
"uri": "textures/lambert2SG_normal.png" |
|||
} |
|||
], |
|||
"materials": [ |
|||
{ |
|||
"alphaCutoff": 0.2, |
|||
"alphaMode": "MASK", |
|||
"doubleSided": true, |
|||
"name": "lambert2SG", |
|||
"normalTexture": { |
|||
"index": 1 |
|||
}, |
|||
"pbrMetallicRoughness": { |
|||
"baseColorTexture": { |
|||
"index": 0 |
|||
}, |
|||
"metallicFactor": 0.0 |
|||
} |
|||
} |
|||
], |
|||
"meshes": [ |
|||
{ |
|||
"name": "Object_0", |
|||
"primitives": [ |
|||
{ |
|||
"attributes": { |
|||
"NORMAL": 1, |
|||
"POSITION": 0, |
|||
"TANGENT": 2, |
|||
"TEXCOORD_0": 3 |
|||
}, |
|||
"indices": 4, |
|||
"material": 0, |
|||
"mode": 4 |
|||
} |
|||
] |
|||
} |
|||
], |
|||
"nodes": [ |
|||
{ |
|||
"children": [ |
|||
1 |
|||
], |
|||
"matrix": [ |
|||
1.0, |
|||
0.0, |
|||
0.0, |
|||
0.0, |
|||
0.0, |
|||
2.220446049250313e-16, |
|||
-1.0, |
|||
0.0, |
|||
0.0, |
|||
1.0, |
|||
2.220446049250313e-16, |
|||
0.0, |
|||
0.0, |
|||
0.0, |
|||
0.0, |
|||
1.0 |
|||
], |
|||
"name": "Sketchfab_model" |
|||
}, |
|||
{ |
|||
"children": [ |
|||
2 |
|||
], |
|||
"name": "LupineSF.obj.cleaner.materialmerger.gles" |
|||
}, |
|||
{ |
|||
"mesh": 0, |
|||
"name": "Object_2" |
|||
} |
|||
], |
|||
"samplers": [ |
|||
{ |
|||
"magFilter": 9729, |
|||
"minFilter": 9987, |
|||
"wrapS": 10497, |
|||
"wrapT": 10497 |
|||
} |
|||
], |
|||
"scene": 0, |
|||
"scenes": [ |
|||
{ |
|||
"name": "Sketchfab_Scene", |
|||
"nodes": [ |
|||
0 |
|||
] |
|||
} |
|||
], |
|||
"textures": [ |
|||
{ |
|||
"sampler": 0, |
|||
"source": 0 |
|||
}, |
|||
{ |
|||
"sampler": 0, |
|||
"source": 1 |
|||
} |
|||
] |
|||
} |
Before Width: | Height: | Size: 3.6 MiB |
Before Width: | Height: | Size: 4.7 MiB |
@ -1,2 +0,0 @@ |
|||
User-agent: * |
|||
Disallow: |
@ -1,7 +0,0 @@ |
|||
package app.timesafari; |
|||
|
|||
import com.getcapacitor.BridgeActivity; |
|||
|
|||
public class MainActivity extends BridgeActivity { |
|||
// ... existing code ...
|
|||
} |
@ -1,5 +0,0 @@ |
|||
package timesafari.app; |
|||
|
|||
import com.getcapacitor.BridgeActivity; |
|||
|
|||
public class MainActivity extends BridgeActivity {} |
Before Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 9.0 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 17 KiB |
@ -1,34 +0,0 @@ |
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android" |
|||
xmlns:aapt="http://schemas.android.com/aapt" |
|||
android:width="108dp" |
|||
android:height="108dp" |
|||
android:viewportHeight="108" |
|||
android:viewportWidth="108"> |
|||
<path |
|||
android:fillType="evenOdd" |
|||
android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z" |
|||
android:strokeColor="#00000000" |
|||
android:strokeWidth="1"> |
|||
<aapt:attr name="android:fillColor"> |
|||
<gradient |
|||
android:endX="78.5885" |
|||
android:endY="90.9159" |
|||
android:startX="48.7653" |
|||
android:startY="61.0927" |
|||
android:type="linear"> |
|||
<item |
|||
android:color="#44000000" |
|||
android:offset="0.0" /> |
|||
<item |
|||
android:color="#00000000" |
|||
android:offset="1.0" /> |
|||
</gradient> |
|||
</aapt:attr> |
|||
</path> |
|||
<path |
|||
android:fillColor="#FFFFFF" |
|||
android:fillType="nonZero" |
|||
android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z" |
|||
android:strokeColor="#00000000" |
|||
android:strokeWidth="1" /> |
|||
</vector> |
@ -1,170 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android" |
|||
android:width="108dp" |
|||
android:height="108dp" |
|||
android:viewportHeight="108" |
|||
android:viewportWidth="108"> |
|||
<path |
|||
android:fillColor="#26A69A" |
|||
android:pathData="M0,0h108v108h-108z" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M9,0L9,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M19,0L19,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M29,0L29,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M39,0L39,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M49,0L49,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M59,0L59,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M69,0L69,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M79,0L79,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M89,0L89,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M99,0L99,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,9L108,9" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,19L108,19" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,29L108,29" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,39L108,39" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,49L108,49" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,59L108,59" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,69L108,69" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,79L108,79" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,89L108,89" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,99L108,99" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M19,29L89,29" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M19,39L89,39" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M19,49L89,49" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M19,59L89,59" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M19,69L89,69" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M19,79L89,79" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M29,19L29,89" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M39,19L39,89" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M49,19L49,89" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M59,19L59,89" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M69,19L69,89" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M79,19L79,89" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
</vector> |
Before Width: | Height: | Size: 3.9 KiB |
@ -1,12 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" |
|||
xmlns:app="http://schemas.android.com/apk/res-auto" |
|||
xmlns:tools="http://schemas.android.com/tools" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="match_parent" |
|||
tools:context=".MainActivity"> |
|||
|
|||
<WebView |
|||
android:layout_width="match_parent" |
|||
android:layout_height="match_parent" /> |
|||
</androidx.coordinatorlayout.widget.CoordinatorLayout> |
@ -1,5 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> |
|||
<background android:drawable="@color/ic_launcher_background"/> |
|||
<foreground android:drawable="@mipmap/ic_launcher_foreground"/> |
|||
</adaptive-icon> |
@ -1,5 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> |
|||
<background android:drawable="@color/ic_launcher_background"/> |
|||
<foreground android:drawable="@mipmap/ic_launcher_foreground"/> |
|||
</adaptive-icon> |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 9.2 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 16 KiB |
@ -1,4 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<resources> |
|||
<color name="ic_launcher_background">#FFFFFF</color> |
|||
</resources> |
@ -1,7 +0,0 @@ |
|||
<?xml version='1.0' encoding='utf-8'?> |
|||
<resources> |
|||
<string name="app_name">TimeSafari</string> |
|||
<string name="title_activity_main">TimeSafari</string> |
|||
<string name="package_name">timesafari.app</string> |
|||
<string name="custom_url_scheme">timesafari.app</string> |
|||
</resources> |
@ -1,22 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<resources> |
|||
|
|||
<!-- Base application theme. --> |
|||
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> |
|||
<!-- Customize your theme here. --> |
|||
<item name="colorPrimary">@color/colorPrimary</item> |
|||
<item name="colorPrimaryDark">@color/colorPrimaryDark</item> |
|||
<item name="colorAccent">@color/colorAccent</item> |
|||
</style> |
|||
|
|||
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.DayNight.NoActionBar"> |
|||
<item name="windowActionBar">false</item> |
|||
<item name="windowNoTitle">true</item> |
|||
<item name="android:background">@null</item> |
|||
</style> |
|||
|
|||
|
|||
<style name="AppTheme.NoActionBarLaunch" parent="Theme.SplashScreen"> |
|||
<item name="android:background">@drawable/splash</item> |
|||
</style> |
|||
</resources> |
@ -1,6 +0,0 @@ |
|||
<?xml version='1.0' encoding='utf-8'?> |
|||
<widget version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> |
|||
<access origin="*" /> |
|||
|
|||
|
|||
</widget> |
@ -1,5 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<paths xmlns:android="http://schemas.android.com/apk/res/android"> |
|||
<external-path name="my_images" path="." /> |
|||
<cache-path name="my_cache_images" path="." /> |
|||
</paths> |
@ -1,18 +0,0 @@ |
|||
package com.getcapacitor.myapp; |
|||
|
|||
import static org.junit.Assert.*; |
|||
|
|||
import org.junit.Test; |
|||
|
|||
/** |
|||
* Example local unit test, which will execute on the development machine (host). |
|||
* |
|||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a> |
|||
*/ |
|||
public class ExampleUnitTest { |
|||
|
|||
@Test |
|||
public void addition_isCorrect() throws Exception { |
|||
assertEquals(4, 2 + 2); |
|||
} |
|||
} |
@ -1,29 +0,0 @@ |
|||
// Top-level build file where you can add configuration options common to all sub-projects/modules. |
|||
|
|||
buildscript { |
|||
|
|||
repositories { |
|||
google() |
|||
mavenCentral() |
|||
} |
|||
dependencies { |
|||
classpath 'com.android.tools.build:gradle:8.2.1' |
|||
classpath 'com.google.gms:google-services:4.4.0' |
|||
|
|||
// NOTE: Do not place your application dependencies here; they belong |
|||
// in the individual module build.gradle files |
|||
} |
|||
} |
|||
|
|||
apply from: "variables.gradle" |
|||
|
|||
allprojects { |
|||
repositories { |
|||
google() |
|||
mavenCentral() |
|||
} |
|||
} |
|||
|
|||
task clean(type: Delete) { |
|||
delete rootProject.buildDir |
|||
} |
@ -1,59 +0,0 @@ |
|||
ext { |
|||
androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.6.1' |
|||
cordovaAndroidVersion = project.hasProperty('cordovaAndroidVersion') ? rootProject.ext.cordovaAndroidVersion : '10.1.1' |
|||
} |
|||
|
|||
buildscript { |
|||
repositories { |
|||
google() |
|||
mavenCentral() |
|||
} |
|||
dependencies { |
|||
classpath 'com.android.tools.build:gradle:8.2.1' |
|||
} |
|||
} |
|||
|
|||
apply plugin: 'com.android.library' |
|||
|
|||
android { |
|||
namespace "capacitor.cordova.android.plugins" |
|||
compileSdk project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 34 |
|||
defaultConfig { |
|||
minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 22 |
|||
targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 34 |
|||
versionCode 1 |
|||
versionName "1.0" |
|||
} |
|||
lintOptions { |
|||
abortOnError false |
|||
} |
|||
compileOptions { |
|||
sourceCompatibility JavaVersion.VERSION_17 |
|||
targetCompatibility JavaVersion.VERSION_17 |
|||
} |
|||
} |
|||
|
|||
repositories { |
|||
google() |
|||
mavenCentral() |
|||
flatDir{ |
|||
dirs 'src/main/libs', 'libs' |
|||
} |
|||
} |
|||
|
|||
dependencies { |
|||
implementation fileTree(dir: 'src/main/libs', include: ['*.jar']) |
|||
implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion" |
|||
implementation "org.apache.cordova:framework:$cordovaAndroidVersion" |
|||
// SUB-PROJECT DEPENDENCIES START |
|||
|
|||
// SUB-PROJECT DEPENDENCIES END |
|||
} |
|||
|
|||
// PLUGIN GRADLE EXTENSIONS START |
|||
apply from: "cordova.variables.gradle" |
|||
// PLUGIN GRADLE EXTENSIONS END |
|||
|
|||
for (def func : cdvPluginPostBuildExtras) { |
|||
func() |
|||
} |
@ -1,7 +0,0 @@ |
|||
// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN |
|||
ext { |
|||
cdvMinSdkVersion = project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 22 |
|||
// Plugin gradle extensions can append to this to have code run at the end. |
|||
cdvPluginPostBuildExtras = [] |
|||
cordovaConfig = [:] |
|||
} |