First quick Sure rebrand (#74)
* First cut of smallest rebrand, pending icons * Leave SQL schema tokens/user names the same for now * First batch of logos * Release notes/what's new * /releases missing * redirect_uri for sureapp:// * Padded logo * Test the correct /releases URL * Missed a few mobile URIs * Some icons/asssets from /website/ repo * Seed/sample data user @sure.local now * New screenshot * Want to keep their legal "boilerplate" from the upstream repo
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
description: This file describes Maybe's design system and how views should be styled
|
description: This file describes Sure's design system and how views should be styled
|
||||||
globs: app/views/**,app/helpers/**,app/javascript/controllers/**
|
globs: app/views/**,app/helpers/**,app/javascript/controllers/**
|
||||||
alwaysApply: true
|
alwaysApply: true
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# ================================ PLEASE READ ===========================================================
|
# ================================ PLEASE READ ===========================================================
|
||||||
# This file outlines all the possible environment variables supported by the Maybe app for self hosting.
|
# This file outlines all the possible environment variables supported by the Sure app for self hosting.
|
||||||
#
|
#
|
||||||
# If you're a developer setting up your local environment, please use `.env.local.example` instead.
|
# If you're a developer setting up your local environment, please use `.env.local.example` instead.
|
||||||
# ========================================================================================================
|
# ========================================================================================================
|
||||||
@@ -32,7 +32,7 @@ SECURITIES_PROVIDER=twelve_data
|
|||||||
PORT=3000
|
PORT=3000
|
||||||
|
|
||||||
# SMTP Configuration
|
# SMTP Configuration
|
||||||
# This is only needed if you intend on sending emails from your Maybe instance (such as for password resets or email financial reports).
|
# This is only needed if you intend on sending emails from your Sure instance (such as for password resets or email financial reports).
|
||||||
# Resend.com is a good option that offers a free tier for sending emails.
|
# Resend.com is a good option that offers a free tier for sending emails.
|
||||||
SMTP_ADDRESS=
|
SMTP_ADDRESS=
|
||||||
SMTP_PORT=465
|
SMTP_PORT=465
|
||||||
@@ -50,7 +50,7 @@ POSTGRES_PASSWORD=postgres
|
|||||||
POSTGRES_USER=postgres
|
POSTGRES_USER=postgres
|
||||||
|
|
||||||
# App Domain
|
# App Domain
|
||||||
# This is the domain that your Maybe instance will be hosted at. It is used to generate links in emails and other places.
|
# This is the domain that your Sure instance will be hosted at. It is used to generate links in emails and other places.
|
||||||
APP_DOMAIN=
|
APP_DOMAIN=
|
||||||
|
|
||||||
# Disable enforcing SSL connections
|
# Disable enforcing SSL connections
|
||||||
|
|||||||
@@ -1,21 +1,21 @@
|
|||||||
# Contributing to Maybe
|
# Contributing to Sure
|
||||||
|
|
||||||
It means so much that you're interested in contributing to Maybe! Seriously. Thank you. The entire community benefits from these contributions!
|
It means so much that you're interested in contributing to Sure! Seriously. Thank you. The entire community benefits from these contributions!
|
||||||
|
|
||||||
## House Rules
|
## House Rules
|
||||||
|
|
||||||
- Before contributing, familiarize yourself with our project conventions. You should read through our [Project Conventions Rule](https://github.com/maybe-finance/maybe/.cursor/rules/project-conventions.mdc), which is intended for LLMs, but is also an excellent primer on how we write code for Maybe.
|
- Before contributing, familiarize yourself with our project conventions. You should read through our [Project Conventions Rule](https://github.com/we-promise/sure/blob/main/.cursor/rules/project-conventions.mdc), which is intended for LLMs, but is also an excellent primer on how we write code for Sure.
|
||||||
- While totally optional, consider using Cursor + VSCode as it will automatically apply our project conventions to your code via the `.cursor/rules` directory.
|
- While totally optional, consider using Cursor + VSCode as it will automatically apply our project conventions to your code via the `.cursor/rules` directory.
|
||||||
- Before contributing, please check if it already exists in [issues](https://github.com/maybe-finance/maybe/issues) or [PRs](https://github.com/maybe-finance/maybe/pulls)
|
- Before contributing, please check if it already exists in [issues](https://github.com/we-promise/sure/issues) or [PRs](https://github.com/we-promise/sure/pulls)
|
||||||
- Given the speed at which we're moving on the codebase, we don't assign issues or "give" issues to anyone.
|
- Given the speed at which we're moving on the codebase, we don't assign issues or "give" issues to anyone.
|
||||||
- When multiple PRs are submitted for the same issue, we take the one that most succinctly & efficiently solves a given problem and stays within the scope of work.
|
- When multiple PRs are submitted for the same issue, we take the one that most succinctly & efficiently solves a given problem and stays within the scope of work.
|
||||||
- Priority is generally given to previous committers as they've proven familiarity with the codebase and product.
|
- Priority is generally given to previous committers as they've proven familiarity with the codebase and product.
|
||||||
|
|
||||||
## What should I contribute?
|
## What should I contribute?
|
||||||
|
|
||||||
As we are still in the early days of this project, we recommend [heading over to the Wiki](https://github.com/maybe-finance/maybe/wiki) to get a better idea of _what_ to contribute.
|
As we are still in the early days of this project, we recommend [heading over to the Wiki](https://github.com/we-promise/sure/wiki) to get a better idea of _what_ to contribute.
|
||||||
|
|
||||||
In general, _full features_ that get us closer to [our Vision](https://github.com/maybe-finance/maybe/wiki/Vision) are the most valuable contributions at this stage.
|
In general, _full features_ that get us closer to [our 🔜 Vision](https://github.com/we-promise/sure/wiki/Vision) are the most valuable contributions at this stage.
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
@@ -25,9 +25,9 @@ To get setup for local development, you have two options:
|
|||||||
|
|
||||||
1. [Dev Containers](https://code.visualstudio.com/docs/devcontainers/containers) with VSCode (see the `.devcontainer` folder)
|
1. [Dev Containers](https://code.visualstudio.com/docs/devcontainers/containers) with VSCode (see the `.devcontainer` folder)
|
||||||
2. Local Development
|
2. Local Development
|
||||||
- [Mac Setup Guide](https://github.com/maybe-finance/maybe/wiki/Mac-Dev-Setup-Guide)
|
- [Mac Setup Guide](https://github.com/we-promise/sure/wiki/Mac-Dev-Setup-Guide)
|
||||||
- [Linux Setup Guide](https://github.com/maybe-finance/maybe/wiki/Linux-Dev-Setup-Guide)
|
- [Linux Setup Guide](https://github.com/we-promise/sure/wiki/Linux-Dev-Setup-Guide)
|
||||||
- [Windows Setup Guide](https://github.com/maybe-finance/maybe/wiki/Windows-Dev-Setup-Guide)
|
- [Windows Setup Guide](https://github.com/we-promise/sure/wiki/Windows-Dev-Setup-Guide)
|
||||||
|
|
||||||
### Making a Pull Request
|
### Making a Pull Request
|
||||||
|
|
||||||
|
|||||||
10
README.md
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
<img width="1190" alt="maybe_hero" src="https://github.com/user-attachments/assets/5ed08763-a9ee-42b2-a436-e05038fcf573" />
|
<img width="1190" alt="sure_hero" src="https://github.com/user-attachments/assets/959f6e9f-2d8a-4f8c-893e-cd3e6eeb4ff2" />
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<!-- Keep these links. Translations will automatically update with the README. -->
|
<!-- Keep these links. Translations will automatically update with the README. -->
|
||||||
@@ -30,11 +30,11 @@ The business end of things didn't work out, and so they stopped developing the a
|
|||||||
|
|
||||||
After spending nearly $1 million on development (employees, contractors, data providers, infra, etc.), the team open-sourced the app. Their goal was to let users self-host it for free — and eventually launch a hosted version for a small fee.
|
After spending nearly $1 million on development (employees, contractors, data providers, infra, etc.), the team open-sourced the app. Their goal was to let users self-host it for free — and eventually launch a hosted version for a small fee.
|
||||||
|
|
||||||
They actually did launch that hosted version… briefly.
|
They actually did launch that hosted version … briefly.
|
||||||
|
|
||||||
That also didn’t work out — at least not as a sustainable B2C business — so now here we are: hosting a community-maintained fork to keep the codebase alive and see where this can go next.
|
That also didn’t work out — at least not as a sustainable B2C business — so now here we are: hosting a community-maintained fork to keep the codebase alive and see where this can go next.
|
||||||
|
|
||||||
Wanna join us?
|
Join us!
|
||||||
|
|
||||||
## Hosting ~Maybe~Sure
|
## Hosting ~Maybe~Sure
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ You’re free to fork it under the AGPLv3 license — but we’d love it if you
|
|||||||
To stay compliant and avoid trademark issues:
|
To stay compliant and avoid trademark issues:
|
||||||
|
|
||||||
- Be sure to include the original [AGPLv3 license](https://github.com/maybe-finance/maybe/blob/main/LICENSE) and clearly state in your README that your fork is based on Maybe Finance but is **not affiliated with or endorsed by** Maybe Finance Inc.
|
- Be sure to include the original [AGPLv3 license](https://github.com/maybe-finance/maybe/blob/main/LICENSE) and clearly state in your README that your fork is based on Maybe Finance but is **not affiliated with or endorsed by** Maybe Finance Inc.
|
||||||
- Don’t use the word “Maybe” in your project name or logo — it’s a trademark of Maybe Finance Inc.
|
- "Maybe" is a trademark of Maybe Finance Inc. and therefore, use of it is NOT allowed in forked repositories (or the logo)
|
||||||
|
|
||||||
## Local Development Setup
|
## Local Development Setup
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ rake demo_data:default
|
|||||||
|
|
||||||
Visit http://localhost:3000 to view the app. You can log in with these demo credentials (from the DB seed):
|
Visit http://localhost:3000 to view the app. You can log in with these demo credentials (from the DB seed):
|
||||||
|
|
||||||
- Email: `user@maybe.local`
|
- Email: `user@sure.local`
|
||||||
- Password: `password`
|
- Password: `password`
|
||||||
|
|
||||||
For further instructions, see guides below.
|
For further instructions, see guides below.
|
||||||
|
|||||||
@@ -1,7 +1,19 @@
|
|||||||
<svg width="94" height="20" viewBox="0 0 94 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<path d="M19.3019 3.39623C20.761 3.39623 21.956 3.84277 22.8868 4.73585C23.8302 5.61635 24.3019 6.98742 24.3019 8.84906V15.0943H19.9623V9.5283C19.9623 8.59748 19.7547 7.9434 19.3396 7.56604C18.9245 7.1761 18.2642 6.98113 17.3585 6.98113C16.4528 6.98113 15.717 7.18239 15.1509 7.58491C14.5975 7.98742 14.3208 8.63522 14.3208 9.5283V15.0943H9.98113V9.5283C9.98113 8.59748 9.77359 7.9434 9.35849 7.56604C8.9434 7.1761 8.28302 6.98113 7.37736 6.98113C6.4717 6.98113 5.73585 7.18239 5.16981 7.58491C4.61635 7.98742 4.33962 8.63522 4.33962 9.5283V15.0943H0V3.77358H4.33962V5.77358C5.63522 4.18868 7.2956 3.39623 9.32076 3.39623C10.3899 3.39623 11.327 3.63522 12.1321 4.11321C12.9497 4.57862 13.5409 5.30818 13.9057 6.30189C14.5723 5.37107 15.3459 4.65409 16.2264 4.15094C17.1069 3.6478 18.1321 3.39623 19.3019 3.39623Z" fill="#242629"/>
|
<svg width="56" height="20" viewBox="0 0 54 20" fill="none"
|
||||||
<path d="M34.7652 3.39623C36.3752 3.39623 37.6897 3.59119 38.7086 3.98113C39.74 4.37107 40.5073 5 41.0105 5.86792C41.5262 6.72327 41.7903 7.86792 41.8029 9.30189V15.0943H37.4633V13.5849C36.5199 14.1635 35.4759 14.5912 34.3312 14.8679C33.1991 15.1447 32.0985 15.283 31.0293 15.283C29.4319 15.283 28.1614 15 27.218 14.434C26.2746 13.8679 25.8029 12.9497 25.8029 11.6792C25.8029 10.2704 26.4256 9.27673 27.6708 8.69811C28.9161 8.10692 30.4633 7.81132 32.3124 7.81132C33.9098 7.81132 35.6268 8 37.4633 8.37736C37.413 7.6478 37.0859 7.13836 36.4822 6.84906C35.891 6.55975 35.0482 6.41509 33.9539 6.41509C32.9602 6.41509 31.9476 6.49057 30.9161 6.64151C29.8973 6.77987 28.7023 7.00629 27.3312 7.32075L26.7274 4.35849C29.608 3.71698 32.2872 3.39623 34.7652 3.39623ZM32.5199 12.2642C33.5513 12.2642 35.1992 12.0755 37.4633 11.6981V10.8302C35.7023 10.5786 34.1991 10.4528 32.9539 10.4528C31.9979 10.4528 31.3186 10.522 30.9161 10.6604C30.5262 10.7987 30.3312 11.0377 30.3312 11.3774C30.3312 11.7044 30.4947 11.9371 30.8218 12.0755C31.1488 12.2013 31.7149 12.2642 32.5199 12.2642Z" fill="#242629"/>
|
xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M55.0136 3.77358H59.4098L54.089 14.8113C53.523 15.9811 52.9381 16.9371 52.3343 17.6792C51.7431 18.434 51.0387 19.0063 50.2211 19.3962C49.4035 19.7987 48.4287 20 47.2966 20C46.6802 20 45.9947 19.9434 45.24 19.8302C44.4853 19.717 43.7431 19.5535 43.0136 19.3396V16.0377C44.6991 16.4151 45.9129 16.6038 46.6551 16.6038C47.196 16.6038 47.6173 16.5723 47.9192 16.5094C48.2337 16.4465 48.5104 16.3082 48.7494 16.0943C49.001 15.8805 49.2588 15.5472 49.523 15.0943H47.4853L42.0702 3.77358H46.4664L50.7305 12.6792L55.0136 3.77358Z" fill="#242629"/>
|
|
||||||
<path d="M70.216 3.39623C71.2851 3.39623 72.2851 3.59748 73.216 4C74.1468 4.38994 74.9078 5.03774 75.499 5.9434C76.1027 6.83648 76.4046 8 76.4046 9.43396C76.4046 10.8679 76.1027 12.0377 75.499 12.9434C74.9078 13.8365 74.1468 14.4843 73.216 14.8868C72.2851 15.2767 71.2851 15.4717 70.216 15.4717C69.109 15.4717 68.0902 15.283 67.1594 14.9057C66.2411 14.5157 65.5116 13.9057 64.9707 13.0755V15.0943H60.631V0H64.9707V5.79245C65.5116 4.96226 66.2411 4.35849 67.1594 3.98113C68.0902 3.59119 69.109 3.39623 70.216 3.39623ZM68.4235 11.8868C69.5807 11.8868 70.4424 11.6855 71.0084 11.283C71.587 10.8805 71.8763 10.2642 71.8763 9.43396C71.8763 8.60377 71.587 7.98742 71.0084 7.58491C70.4424 7.18239 69.5807 6.98113 68.4235 6.98113C67.2663 6.98113 66.3983 7.18239 65.8197 7.58491C65.2537 7.98742 64.9707 8.60377 64.9707 9.43396C64.9707 10.2642 65.2537 10.8805 65.8197 11.283C66.3983 11.6855 67.2663 11.8868 68.4235 11.8868Z" fill="#242629"/>
|
<style>
|
||||||
<path d="M86.1885 12.2642C87.1948 12.2642 87.9558 12.1635 88.4715 11.9623C88.9999 11.7484 89.3646 11.4403 89.5659 11.0377H93.8112C93.4212 12.4969 92.5973 13.6038 91.3395 14.3585C90.0942 15.1006 88.3206 15.4717 86.0187 15.4717C83.4275 15.4717 81.4087 14.956 79.9621 13.9245C78.5156 12.8931 77.7923 11.3962 77.7923 9.43396C77.7923 8.12579 78.1319 7.02516 78.8112 6.13208C79.4904 5.22641 80.4338 4.54717 81.6414 4.09434C82.8489 3.62893 84.2514 3.39623 85.8489 3.39623C88.3521 3.39623 90.3206 3.96226 91.7546 5.09434C93.1885 6.22642 93.9055 7.91195 93.9055 10.1509H82.1885C82.3269 10.9308 82.7231 11.478 83.3772 11.7925C84.0439 12.1069 84.981 12.2642 86.1885 12.2642ZM85.8489 6.22642C84.8929 6.22642 84.1256 6.36478 83.547 6.64151C82.9684 6.91824 82.5659 7.37107 82.3395 8H89.415C89.176 7.37107 88.7609 6.91824 88.1697 6.64151C87.591 6.36478 86.8175 6.22642 85.8489 6.22642Z" fill="#242629"/>
|
.word{
|
||||||
|
fill:#242629; /* brand colour */
|
||||||
|
font-family:'Geist',Arial,sans-serif;
|
||||||
|
font-weight:900; /* black / heaviest weight */
|
||||||
|
font-size:19px; /* cap-height ≈ 19 px */
|
||||||
|
letter-spacing:0.15px; /* optical match */
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- 1-px padding on the left, identical on the right after crop -->
|
||||||
|
<g transform="translate(1,0) scale(1.28 1)">
|
||||||
|
<text class="word" x="0" y="16">sure</text>
|
||||||
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 738 B |
@@ -1,12 +1,35 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 36 36" fill="none">
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<path d="M8.39804 24.0315H4.09584C3.07641 24.0315 2.25 24.8609 2.25 25.8841C2.25 26.9072 3.07641 27.7367 4.09584 27.7367H8.39804C9.41747 27.7367 10.2439 26.9072 10.2439 25.8841C10.2439 24.8609 9.41747 24.0315 8.39804 24.0315Z" fill="#F23E94"/>
|
<svg xmlns="http://www.w3.org/2000/svg"
|
||||||
<path d="M27.6403 27.7359H31.9425C32.9619 27.7359 33.7883 26.9065 33.7883 25.8833C33.7883 24.8601 32.9619 24.0307 31.9425 24.0307H27.6403C26.6209 24.0307 25.7945 24.8601 25.7945 25.8833C25.7945 26.9065 26.6209 27.7359 27.6403 27.7359Z" fill="#F23E94"/>
|
width="36" height="36" viewBox="0 0 512 512" fill="none">
|
||||||
<path d="M19.7588 24.0189H16.2567C15.2373 24.0189 14.4109 24.8483 14.4109 25.8715C14.4109 26.8947 15.2373 27.7241 16.2567 27.7241H19.7588C20.7783 27.7241 21.6047 26.8947 21.6047 25.8715C21.6047 24.8483 20.7783 24.0189 19.7588 24.0189Z" fill="#F23E94"/>
|
|
||||||
<path d="M25.9683 22.4047H30.1112C31.1306 22.4047 31.957 21.5753 31.957 20.5521C31.957 19.529 31.1306 18.6995 30.1112 18.6995H25.9683C24.9489 18.6995 24.1225 19.529 24.1225 20.5521C24.1225 21.5753 24.9489 22.4047 25.9683 22.4047Z" fill="#6927DA"/>
|
<!-- single gold-to-amber gradient shared by every pill -->
|
||||||
<path d="M9.99971 18.6993H5.85685C4.83742 18.6993 4.01101 19.5288 4.01101 20.5519C4.01101 21.5751 4.83742 22.4045 5.85685 22.4045H9.99971C11.0191 22.4045 11.8455 21.5751 11.8455 20.5519C11.8455 19.5288 11.0191 18.6993 9.99971 18.6993Z" fill="#6927DA"/>
|
<defs>
|
||||||
<path d="M21.0888 18.6875H14.924C13.9045 18.6875 13.0781 19.517 13.0781 20.5401C13.0781 21.5633 13.9045 22.3927 14.924 22.3927H21.0888C22.1082 22.3927 22.9346 21.5633 22.9346 20.5401C22.9346 19.517 22.1082 18.6875 21.0888 18.6875Z" fill="#6927DA"/>
|
<linearGradient id="s-grad" x1="0" y1="0" x2="0" y2="1">
|
||||||
<path d="M15.5578 13.2072H7.69136C6.67193 13.2072 5.84552 14.0366 5.84552 15.0598C5.84552 16.0829 6.67193 16.9123 7.69136 16.9123H15.5578C16.5772 16.9123 17.4036 16.0829 17.4036 15.0598C17.4036 14.0366 16.5772 13.2072 15.5578 13.2072Z" fill="#1570EF"/>
|
<stop offset="0%" stop-color="#FFBC47"/>
|
||||||
<path d="M20.9094 16.9116H28.2735C29.2929 16.9116 30.1193 16.0821 30.1193 15.059C30.1193 14.0358 29.2929 13.2064 28.2735 13.2064L20.9094 13.2064C19.89 13.2064 19.0636 14.0358 19.0636 15.059C19.0636 16.0821 19.89 16.9116 20.9094 16.9116Z" fill="#1570EF"/>
|
<stop offset="100%" stop-color="#C97700"/>
|
||||||
<path d="M26.5036 7.875H22.3515C21.3321 7.875 20.5057 8.70443 20.5057 9.72759C20.5057 10.7507 21.3321 11.5802 22.3515 11.5802H26.5036C27.523 11.5802 28.3494 10.7507 28.3494 9.72759C28.3494 8.70443 27.523 7.875 26.5036 7.875Z" fill="#22CCEE"/>
|
</linearGradient>
|
||||||
<path d="M13.6077 7.875H9.45557C8.43614 7.875 7.60973 8.70443 7.60973 9.72759C7.60973 10.7507 8.43614 11.5802 9.45557 11.5802H13.6077C14.6271 11.5802 15.4535 10.7507 15.4535 9.72759C15.4535 8.70443 14.6271 7.875 13.6077 7.875Z" fill="#22CCEE"/>
|
</defs>
|
||||||
|
|
||||||
|
<!-- the “S” from the 512-grid artwork, scaled & shifted so its
|
||||||
|
visible pixels sit inside the old-M bounding box (131-381 × 57-455) -->
|
||||||
|
<g transform="translate(131 131) scale(0.48828125)">
|
||||||
|
<rect x="80" y="0" width="140" height="63" rx="31.5" fill="url(#s-grad)"/>
|
||||||
|
<rect x="236" y="0" width="140" height="63" rx="31.5" fill="url(#s-grad)"/>
|
||||||
|
|
||||||
|
<rect x="0" y="74" width="140" height="64" rx="32" fill="url(#s-grad)"/>
|
||||||
|
<rect x="252" y="74" width="140" height="64" rx="32" fill="url(#s-grad)"/>
|
||||||
|
|
||||||
|
<rect x="0" y="149" width="140" height="64" rx="32" fill="url(#s-grad)"/>
|
||||||
|
|
||||||
|
<rect x="80" y="224" width="144" height="64" rx="32" fill="url(#s-grad)"/>
|
||||||
|
<rect x="240" y="224" width="192" height="64" rx="32" fill="url(#s-grad)"/>
|
||||||
|
|
||||||
|
<rect x="376" y="299" width="136" height="64" rx="32" fill="url(#s-grad)"/>
|
||||||
|
|
||||||
|
<rect x="120" y="374" width="136" height="64" rx="32" fill="url(#s-grad)"/>
|
||||||
|
<rect x="376" y="374" width="136" height="64" rx="32" fill="url(#s-grad)"/>
|
||||||
|
|
||||||
|
<rect x="136" y="449" width="140" height="63" rx="31.5" fill="url(#s-grad)"/>
|
||||||
|
<rect x="292" y="449" width="140" height="63" rx="31.5" fill="url(#s-grad)"/>
|
||||||
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 1.6 KiB |
@@ -1,19 +1,36 @@
|
|||||||
<svg width="371" height="233" viewBox="0 0 371 233" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<g clip-path="url(#clip0_2_280)">
|
<svg xmlns="http://www.w3.org/2000/svg"
|
||||||
<path d="M133.619 43.4224H84.7752C72.7844 43.4224 63.064 33.702 63.064 21.7115C63.064 9.72063 72.7844 -0.000171661 84.7752 -0.000171661H133.619C145.61 -0.000171661 155.33 9.72063 155.33 21.7115C155.33 33.702 145.61 43.4224 133.619 43.4224Z" fill="#19181D"/>
|
width="233" height="233"
|
||||||
<path d="M285.312 43.4224H236.468C224.477 43.4224 214.757 33.702 214.757 21.7115C214.757 9.72063 224.477 -0.000171661 236.468 -0.000171661H285.312C297.303 -0.000171661 307.023 9.72063 307.023 21.7115C307.023 33.702 297.303 43.4224 285.312 43.4224Z" fill="#19181D"/>
|
viewBox="0 0 512 512"
|
||||||
<path d="M156.562 105.917H64.0199C52.029 105.917 42.3086 96.1961 42.3086 84.2056C42.3086 72.2148 52.029 62.494 64.0199 62.494H156.562C168.553 62.494 178.273 72.2148 178.273 84.2056C178.273 96.1961 168.553 105.917 156.562 105.917Z" fill="#19181D"/>
|
preserveAspectRatio="xMidYMid meet">
|
||||||
<path d="M219.509 105.917H306.135C318.126 105.917 327.846 96.1961 327.846 84.2056C327.846 72.2148 318.126 62.494 306.135 62.494H219.509C207.518 62.494 197.797 72.2148 197.797 84.2056C197.797 96.1961 207.518 105.917 219.509 105.917Z" fill="#19181D"/>
|
|
||||||
<path d="M72.3277 232.781H21.7109C9.72041 232.781 0 223.06 0 211.069C0 199.079 9.72041 189.358 21.7109 189.358H72.3277C84.3186 189.358 94.039 199.079 94.039 211.069C94.039 223.06 84.3186 232.781 72.3277 232.781Z" fill="#19181D"/>
|
<!-- single-tone fill that matches the old “M” -->
|
||||||
<path d="M298.672 232.781H349.289C361.279 232.781 371 223.06 371 211.069C371 199.079 361.279 189.358 349.289 189.358H298.672C286.681 189.358 276.96 199.079 276.96 211.069C276.96 223.06 286.681 232.781 298.672 232.781Z" fill="#19181D"/>
|
<style>.pill{fill:#0E1017;}</style>
|
||||||
<path d="M205.961 232.641H164.761C152.77 232.641 143.05 222.921 143.05 210.93C143.05 198.939 152.77 189.219 164.761 189.219H205.961C217.952 189.219 227.672 198.939 227.672 210.93C227.672 222.921 217.952 232.641 205.961 232.641Z" fill="#19181D"/>
|
|
||||||
<path d="M91.1608 170.293H42.4272C30.4367 170.293 20.7163 160.573 20.7163 148.583C20.7163 136.592 30.4367 126.871 42.4272 126.871H91.1608C103.152 126.871 112.872 136.592 112.872 148.583C112.872 160.573 103.152 170.293 91.1608 170.293Z" fill="#19181D"/>
|
<!-- full “S” artwork: no extra translate, no non-uniform scaling -->
|
||||||
<path d="M278.994 170.293H327.728C339.718 170.293 349.438 160.573 349.438 148.583C349.438 136.592 339.718 126.871 327.728 126.871H278.994C267.003 126.871 257.283 136.592 257.283 148.583C257.283 160.573 267.003 170.293 278.994 170.293Z" fill="#19181D"/>
|
<!-- Row 0 -->
|
||||||
<path d="M221.622 170.155H149.099C137.109 170.155 127.388 160.434 127.388 148.444C127.388 136.453 137.109 126.732 149.099 126.732H221.622C233.612 126.732 243.333 136.453 243.333 148.444C243.333 160.434 233.612 170.155 221.622 170.155Z" fill="#19181D"/>
|
<rect class="pill" x="80" y="0" width="140" height="63" rx="31.5"/>
|
||||||
</g>
|
<rect class="pill" x="236" y="0" width="140" height="63" rx="31.5"/>
|
||||||
<defs>
|
|
||||||
<clipPath id="clip0_2_280">
|
<!-- Row 1 -->
|
||||||
<rect width="371" height="233" fill="white"/>
|
<rect class="pill" x="0" y="74" width="140" height="64" rx="32"/>
|
||||||
</clipPath>
|
<rect class="pill" x="252" y="74" width="140" height="64" rx="32"/>
|
||||||
</defs>
|
|
||||||
|
<!-- Row 2 -->
|
||||||
|
<rect class="pill" x="0" y="149" width="140" height="64" rx="32"/>
|
||||||
|
|
||||||
|
<!-- Row 3 -->
|
||||||
|
<rect class="pill" x="80" y="224" width="144" height="64" rx="32"/>
|
||||||
|
<rect class="pill" x="240" y="224" width="192" height="64" rx="32"/>
|
||||||
|
|
||||||
|
<!-- Row 4 -->
|
||||||
|
<rect class="pill" x="376" y="299" width="136" height="64" rx="32"/>
|
||||||
|
|
||||||
|
<!-- Row 5 -->
|
||||||
|
<rect class="pill" x="120" y="374" width="136" height="64" rx="32"/>
|
||||||
|
<rect class="pill" x="376" y="374" width="136" height="64" rx="32"/>
|
||||||
|
|
||||||
|
<!-- Row 6 -->
|
||||||
|
<rect class="pill" x="136" y="449" width="140" height="63" rx="31.5"/>
|
||||||
|
<rect class="pill" x="292" y="449" width="140" height="63" rx="31.5"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 299 KiB After Width: | Height: | Size: 299 KiB |
|
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 91 KiB |
@@ -33,11 +33,11 @@ class PagesController < ApplicationController
|
|||||||
# Fallback if no release notes are available
|
# Fallback if no release notes are available
|
||||||
if @release_notes.nil?
|
if @release_notes.nil?
|
||||||
@release_notes = {
|
@release_notes = {
|
||||||
avatar: "https://github.com/maybe-finance.png",
|
avatar: "https://github.com/we-promise.png",
|
||||||
username: "maybe-finance",
|
username: "we-promise",
|
||||||
name: "Release notes unavailable",
|
name: "Release notes unavailable",
|
||||||
published_at: Date.current,
|
published_at: Date.current,
|
||||||
body: "<p>Unable to fetch the latest release notes at this time. Please check back later or visit our <a href='https://github.com/maybe-finance/maybe/releases' target='_blank'>GitHub releases page</a> directly.</p>"
|
body: "<p>Unable to fetch the latest release notes at this time. Please check back later or visit our <a href='https://github.com/we-promise/sure/releases' target='_blank'>GitHub releases page</a> directly.</p>"
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
class ApplicationMailer < ActionMailer::Base
|
class ApplicationMailer < ActionMailer::Base
|
||||||
default from: email_address_with_name(ENV.fetch("EMAIL_SENDER", "sender@maybe.local"), "Maybe Finance")
|
default from: email_address_with_name(ENV.fetch("EMAIL_SENDER", "sender@sure.local"), "Sure Finance")
|
||||||
layout "mailer"
|
layout "mailer"
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class Demo::Generator
|
|||||||
end
|
end
|
||||||
|
|
||||||
puts "👥 Creating empty family..."
|
puts "👥 Creating empty family..."
|
||||||
create_family_and_users!("Demo Family", "user@maybe.local", onboarded: true, subscribed: true)
|
create_family_and_users!("Demo Family", "user@sure.local", onboarded: true, subscribed: true)
|
||||||
|
|
||||||
puts "✅ Empty demo data loaded successfully!"
|
puts "✅ Empty demo data loaded successfully!"
|
||||||
end
|
end
|
||||||
@@ -53,14 +53,14 @@ class Demo::Generator
|
|||||||
end
|
end
|
||||||
|
|
||||||
puts "👥 Creating new user family..."
|
puts "👥 Creating new user family..."
|
||||||
create_family_and_users!("Demo Family", "user@maybe.local", onboarded: false, subscribed: false)
|
create_family_and_users!("Demo Family", "user@sure.local", onboarded: false, subscribed: false)
|
||||||
|
|
||||||
puts "✅ New user demo data loaded successfully!"
|
puts "✅ New user demo data loaded successfully!"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Generate comprehensive realistic demo data with multi-currency
|
# Generate comprehensive realistic demo data with multi-currency
|
||||||
def generate_default_data!(skip_clear: false, email: "user@maybe.local")
|
def generate_default_data!(skip_clear: false, email: "user@sure.local")
|
||||||
if skip_clear
|
if skip_clear
|
||||||
puts "⏭️ Skipping data clearing (appending new family)..."
|
puts "⏭️ Skipping data clearing (appending new family)..."
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ class Provider::Github
|
|||||||
attr_reader :name, :owner, :branch
|
attr_reader :name, :owner, :branch
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
@name = "maybe"
|
@name = "sure"
|
||||||
@owner = "maybe-finance"
|
@owner = "we-promise"
|
||||||
@branch = "main"
|
@branch = "main"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% turbo_disabled = @pre_auth.redirect_uri&.start_with?("maybeapp://") || params[:display] == "mobile" %>
|
<% turbo_disabled = @pre_auth.redirect_uri&.start_with?("sureapp://") || params[:display] == "mobile" %>
|
||||||
<%= form_tag @pre_auth.redirect_uri, method: :post, name: :redirect_form, authenticity_token: false, data: { turbo: !turbo_disabled } do %>
|
<%= form_tag @pre_auth.redirect_uri, method: :post, name: :redirect_form, authenticity_token: false, data: { turbo: !turbo_disabled } do %>
|
||||||
<% auth.body.compact.each do |key, value| %>
|
<% auth.body.compact.each do |key, value| %>
|
||||||
<%= hidden_field_tag key, value %>
|
<%= hidden_field_tag key, value %>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<% if params[:redirect_uri]&.start_with?('maybeapp://') || params[:display] == 'mobile' %>
|
<% if params[:redirect_uri]&.start_with?('sureapp://') || params[:display] == 'mobile' %>
|
||||||
<meta name="turbo-visit-control" content="reload">
|
<meta name="turbo-visit-control" content="reload">
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class="space-y-3">
|
<div class="space-y-3">
|
||||||
<% turbo_disabled = params[:redirect_uri]&.start_with?("maybeapp://") || params[:display] == "mobile" %>
|
<% turbo_disabled = params[:redirect_uri]&.start_with?("sureapp://") || params[:display] == "mobile" %>
|
||||||
<%= form_tag oauth_authorization_path, method: :post, class: "w-full", data: { turbo: !turbo_disabled } do %>
|
<%= form_tag oauth_authorization_path, method: :post, class: "w-full", data: { turbo: !turbo_disabled } do %>
|
||||||
<%= hidden_field_tag :client_id, @pre_auth.client.uid, id: nil %>
|
<%= hidden_field_tag :client_id, @pre_auth.client.uid, id: nil %>
|
||||||
<%= hidden_field_tag :redirect_uri, @pre_auth.redirect_uri, id: nil %>
|
<%= hidden_field_tag :redirect_uri, @pre_auth.redirect_uri, id: nil %>
|
||||||
@@ -71,6 +71,6 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="text-xs text-tertiary text-center">
|
<p class="text-xs text-tertiary text-center">
|
||||||
By authorizing, you allow this app to access your Maybe data according to the permissions above.
|
By authorizing, you allow this app to access your Sure data according to the permissions above.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<footer class="p-6">
|
<footer class="p-6">
|
||||||
<div class="space-y-2 text-center text-xs text-secondary">
|
<div class="space-y-2 text-center text-xs text-secondary">
|
||||||
<p>© <%= Date.current.year %>, Maybe Finance, Inc.</p>
|
<p>© <%= Date.current.year %>, Sure (community fork of Maybe Finance)</p>
|
||||||
<div class="flex justify-center items-center gap-2">
|
<div class="flex justify-center items-center gap-2">
|
||||||
<%= link_to "Privacy Policy", privacy_path, class: "text-secondary", target: "_blank" %>
|
<%= link_to "Privacy Policy", privacy_path, class: "text-secondary", target: "_blank" %>
|
||||||
<span>•</span>
|
<span>•</span>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<head>
|
<head>
|
||||||
<title><%= content_for(:title) || "Maybe" %></title>
|
<title><%= content_for(:title) || "Sure" %></title>
|
||||||
|
|
||||||
<%= csrf_meta_tags %>
|
<%= csrf_meta_tags %>
|
||||||
<%= csp_meta_tag %>
|
<%= csp_meta_tag %>
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="mobile-web-app-capable" content="yes">
|
<meta name="mobile-web-app-capable" content="yes">
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||||
<meta name="apple-mobile-web-app-title" content="Maybe">
|
<meta name="apple-mobile-web-app-title" content="Sure">
|
||||||
|
|
||||||
<meta name="msapplication-TileColor" content="#F9F9F9">
|
<meta name="msapplication-TileColor" content="#F9F9F9">
|
||||||
<meta name="theme-color" content="#F9F9F9">
|
<meta name="theme-color" content="#F9F9F9">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "Maybe",
|
"name": "Sure",
|
||||||
"short_name": "Maybe",
|
"short_name": "Sure",
|
||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": "/logo-pwa.png",
|
"src": "/logo-pwa.png",
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
"display": "standalone",
|
"display": "standalone",
|
||||||
"display_override": ["fullscreen", "minimal-ui"],
|
"display_override": ["fullscreen", "minimal-ui"],
|
||||||
"scope": "/",
|
"scope": "/",
|
||||||
"description": "Maybe is your personal finance assistant.",
|
"description": "Sure is your personal finance assistant.",
|
||||||
"theme_color": "#F9F9F9",
|
"theme_color": "#F9F9F9",
|
||||||
"background_color": "#F9F9F9"
|
"background_color": "#F9F9F9"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,14 +21,14 @@
|
|||||||
</p>
|
</p>
|
||||||
<% elsif @family.trialing? %>
|
<% elsif @family.trialing? %>
|
||||||
<p class="text-primary">
|
<p class="text-primary">
|
||||||
You are currently trialing Maybe
|
You are currently trialing Sure
|
||||||
<span class="text-secondary">
|
<span class="text-secondary">
|
||||||
(<%= @family.days_left_in_trial %> days remaining)
|
(<%= @family.days_left_in_trial %> days remaining)
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<% else %>
|
<% else %>
|
||||||
<p class="text-primary">You are currently <span class="font-medium">not subscribed</span></p>
|
<p class="text-primary">You are currently <span class="font-medium">not subscribed</span></p>
|
||||||
<p class="text-secondary">Once you subscribe to Maybe+, you'll see your billing settings here.</p>
|
<p class="text-secondary">Once you subscribe to Sure+, you'll see your billing settings here.</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
# --------
|
# --------
|
||||||
#
|
#
|
||||||
# This file is an example Docker Compose configuration for self hosting
|
# This file is an example Docker Compose configuration for self hosting
|
||||||
# Maybe on your local machine or on a cloud VPS.
|
# Sure on your local machine or on a cloud VPS.
|
||||||
#
|
#
|
||||||
# The configuration below is a "standard" setup that works out of the box,
|
# The configuration below is a "standard" setup that works out of the box,
|
||||||
# but if you're running this outside of a local network, it is recommended
|
# but if you're running this outside of a local network, it is recommended
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
#
|
#
|
||||||
# If you run into problems, you should open a Discussion here:
|
# If you run into problems, you should open a Discussion here:
|
||||||
#
|
#
|
||||||
# https://github.com/maybe-finance/maybe/discussions/categories/general
|
# https://github.com/we-promise/sure/discussions/categories/general
|
||||||
#
|
#
|
||||||
|
|
||||||
x-db-env: &db_env
|
x-db-env: &db_env
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ en:
|
|||||||
layouts:
|
layouts:
|
||||||
auth:
|
auth:
|
||||||
existing_account: Already have an account?
|
existing_account: Already have an account?
|
||||||
no_account: New to Maybe?
|
no_account: New to Sure?
|
||||||
sign_in: Sign in
|
sign_in: Sign in
|
||||||
sign_up: Create account
|
sign_up: Create account
|
||||||
your_account: Your account
|
your_account: Your account
|
||||||
|
|||||||
@@ -25,4 +25,4 @@ en:
|
|||||||
message: We’re really excited you’re here. In the next step we’ll ask you a
|
message: We’re really excited you’re here. In the next step we’ll ask you a
|
||||||
few questions to complete your profile and then get you all set up.
|
few questions to complete your profile and then get you all set up.
|
||||||
setup: Set up account
|
setup: Set up account
|
||||||
title: Meet Maybe
|
title: Meet Sure
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ en:
|
|||||||
last_name: Last Name
|
last_name: Last Name
|
||||||
page_title: Account
|
page_title: Account
|
||||||
pending: Pending
|
pending: Pending
|
||||||
profile_subtitle: Customize how you appear on Maybe
|
profile_subtitle: Customize how you appear on Sure
|
||||||
profile_title: Profile
|
profile_title: Profile
|
||||||
remove_invitation: Remove Invitation
|
remove_invitation: Remove Invitation
|
||||||
remove_member: Remove Member
|
remove_member: Remove Member
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
en:
|
en:
|
||||||
subscriptions:
|
subscriptions:
|
||||||
self_hosted_alert: "Maybe+ is not available in self-hosted mode."
|
self_hosted_alert: "Sure+ is not available in self-hosted mode."
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
---
|
---
|
||||||
tr:
|
tr:
|
||||||
subscriptions:
|
subscriptions:
|
||||||
self_hosted_alert: "Maybe+ kendi sunucunda barındırılan modda kullanılamaz."
|
self_hosted_alert: "Sure+ kendi sunucunda barındırılan modda kullanılamaz."
|
||||||
@@ -137,13 +137,13 @@ If you find bugs or have a feature request, be sure to read through our [contrib
|
|||||||
|
|
||||||
## How to update your app
|
## How to update your app
|
||||||
|
|
||||||
The mechanism that updates your self-hosted Maybe app is the GHCR (Github Container Registry) Docker image that you see in the `compose.yml` file:
|
The mechanism that updates your self-hosted Sure app is the GHCR (Github Container Registry) Docker image that you see in the `compose.yml` file:
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
image: ghcr.io/we-promise/sure:latest
|
image: ghcr.io/we-promise/sure:latest
|
||||||
```
|
```
|
||||||
|
|
||||||
We recommend using one of the following images, but you can pin your app to whatever version you'd like (see [packages](https://github.com/we-promise/sure/pkgs/container/maybe)):
|
We recommend using one of the following images, but you can pin your app to whatever version you'd like (see [packages](https://github.com/we-promise/sure/pkgs/container/sure)):
|
||||||
|
|
||||||
- `ghcr.io/we-promise/sure:latest` (latest commit)
|
- `ghcr.io/we-promise/sure:latest` (latest commit)
|
||||||
- `ghcr.io/we-promise/sure:stable` (latest release)
|
- `ghcr.io/we-promise/sure:stable` (latest release)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ namespace :benchmarking do
|
|||||||
Benchmark.ips do |x|
|
Benchmark.ips do |x|
|
||||||
x.config(time: 30, warmup: 10)
|
x.config(time: 30, warmup: 10)
|
||||||
|
|
||||||
family = User.find_by(email: "user@maybe.local").family
|
family = User.find_by(email: "user@sure.local").family
|
||||||
scope = family.transactions.active
|
scope = family.transactions.active
|
||||||
|
|
||||||
# x.report("IncomeStatement::Totals") do
|
# x.report("IncomeStatement::Totals") do
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "^1.9.3"
|
"@biomejs/biome": "^1.9.3"
|
||||||
},
|
},
|
||||||
"name": "maybe",
|
"name": "sure",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "The OS for your personal finances",
|
"description": "The personal finance app for everyone",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"style:check": "biome check",
|
"style:check": "biome check",
|
||||||
"style:fix": "biome check --write",
|
"style:fix": "biome check --write",
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class CustomAuth < DerailedBenchmarks::AuthHelper
|
|||||||
|
|
||||||
def call(env)
|
def call(env)
|
||||||
# Make sure this user is created in the DB with realistic data before running benchmarks
|
# Make sure this user is created in the DB with realistic data before running benchmarks
|
||||||
user = User.find_by!(email: "user@maybe.local")
|
user = User.find_by!(email: "user@sure.local")
|
||||||
|
|
||||||
Rails.logger.debug "Found user for benchmarking: #{user.email}"
|
Rails.logger.debug "Found user for benchmarking: #{user.email}"
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 486 B After Width: | Height: | Size: 695 B |
|
Before Width: | Height: | Size: 969 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
@@ -1 +1,14 @@
|
|||||||
<svg height="1000pt" preserveAspectRatio="xMidYMid meet" viewBox="0 0 1000 1000" width="1000pt" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(.1 0 0 -.1 0 1000)"><path d="m2815 7423c-141-33-251-115-315-234-130-245-19-537 245-639l60-24 580-2c638-3 644-2 757 58 71 38 152 123 185 195 27 58 53 173 48 206-2 12-6 44-9 72-5 52-60 173-98 215-68 74-169 133-260 150-50 10-1153 12-1193 3z"/><path d="m5960 7416c-170-47-302-186-335-353-7-35-8-161-1-171 3-5 7-21 10-37 9-46 53-129 96-178 48-54 113-99 189-129 55-22 63-22 641-23 454-2 598 1 642 11 143 34 263 142 317 288 90 242-58 523-310 590-74 20-1179 22-1249 2z"/><path d="m2437 6124c-1-1-20-4-43-7-137-19-276-121-335-247-37-79-48-130-45-214 6-167 93-309 235-385 110-58 83-57 1201-56 995 2 1027 3 1086 22 222 73 353 294 307 519-19 97-61 174-131 242-41 40-141 96-202 113-34 9-291 12-1058 13-558 1-1014 0-1015 0z"/><path d="m5675 6122c-187-19-352-160-399-343-11-42-13-172-4-209 46-180 196-322 368-347 70-11 1971-10 1987 0 7 5 22 10 32 12 80 15 205 113 255 198 134 227 53 521-175 638-107 54-69 52-1089 53-520 1-958 0-975-2z"/><path d="m1915 4765c-163-39-277-142-329-296-21-62-25-89-22-169 1-52 7-104 13-115s21-42 34-68c48-101 142-183 258-223 66-23 66-23 637-24 392 0 589 3 625 11 193 41 341 215 353 415 5 84-8 147-49 230-60 123-192 222-324 243-85 13-1138 10-1196-4z"/><path d="m4140 4768c-25-5-49-14-54-19-6-5-16-9-23-9-22 0-95-51-145-102-80-80-126-193-126-307 0-127 42-233 128-321 57-59 121-96 206-120 65-19 105-20 879-19 866 0 852 0 962 51 71 33 168 133 204 213 80 176 47 365-89 507-61 64-147 112-231 128-71 13-1649 12-1711-2z"/><path d="m6858 4764c-82-19-151-57-212-117-248-243-151-647 182-757 53-18 95-19 632-20 619 0 640 1 734 53 147 80 236 229 237 397 1 213-150 403-354 445-87 18-1141 17-1219-1z"/><path d="m4511 3467c-116-14-241-88-307-183-98-139-113-304-40-459 55-118 155-203 281-241 54-16 111-18 543-19 335 0 501 3 541 11 84 17 157 58 223 125 246 245 137 657-199 755-50 15-118 17-518 18-253 1-489-3-524-7z"/><path d="m1476 3459c-152-36-295-174-335-324-59-225 63-460 284-546l60-23 598-1c329-1 619 2 645 7 165 30 316 177 353 343 53 241-92 476-336 541-39 11-174 14-640 13-324-1-608-5-629-10z"/><path d="m7267 3459c-140-33-274-153-322-288-43-122-30-274 32-380 56-96 167-182 273-212 53-15 1190-22 1269-7 79 14 184 72 239 132 198 217 157 539-88 696-108 70-98 69-765 68-330 0-617-4-638-9z"/></g></svg>
|
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<rect x="240" y="224.782" width="192" height="62.439" rx="31.2195" fill="black"/>
|
||||||
|
<rect x="80" y="224.782" width="144" height="62.439" rx="31.2195" fill="black"/>
|
||||||
|
<rect x="376" y="299.71" width="136" height="62.439" rx="31.2195" fill="black"/>
|
||||||
|
<rect x="376" y="374.633" width="136" height="62.439" rx="31.2195" fill="black"/>
|
||||||
|
<rect x="80" width="140" height="62.439" rx="31.2195" fill="black"/>
|
||||||
|
<rect x="236" width="140" height="62.439" rx="31.2195" fill="black"/>
|
||||||
|
<rect x="252" y="74.9292" width="140" height="62.439" rx="31.2195" fill="black"/>
|
||||||
|
<rect x="432" y="512" width="140" height="62.439" rx="31.2195" transform="rotate(180 432 512)" fill="black"/>
|
||||||
|
<rect x="276" y="512" width="140" height="62.439" rx="31.2195" transform="rotate(180 276 512)" fill="black"/>
|
||||||
|
<rect x="256" y="437.076" width="136" height="62.439" rx="31.2195" transform="rotate(180 256 437.076)" fill="black"/>
|
||||||
|
<rect y="74.9292" width="140" height="62.439" rx="31.2195" fill="black"/>
|
||||||
|
<rect y="149.857" width="140" height="62.439" rx="31.2195" fill="black"/>
|
||||||
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 1.1 KiB |
@@ -26,7 +26,7 @@ class PagesControllerTest < ActionDispatch::IntegrationTest
|
|||||||
get changelog_path
|
get changelog_path
|
||||||
assert_response :ok
|
assert_response :ok
|
||||||
assert_select "h2", text: "Release notes unavailable"
|
assert_select "h2", text: "Release notes unavailable"
|
||||||
assert_select "a[href='https://github.com/maybe-finance/maybe/releases']"
|
assert_select "a[href='https://github.com/we-promise/sure/releases']"
|
||||||
end
|
end
|
||||||
|
|
||||||
test "changelog with incomplete release notes" do
|
test "changelog with incomplete release notes" do
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ class OauthMobileTest < ActionDispatch::IntegrationTest
|
|||||||
|
|
||||||
@oauth_app = Doorkeeper::Application.create!(
|
@oauth_app = Doorkeeper::Application.create!(
|
||||||
name: "Maybe Mobile App",
|
name: "Maybe Mobile App",
|
||||||
redirect_uri: "maybeapp://oauth/callback",
|
redirect_uri: "sureapp://oauth/callback",
|
||||||
scopes: "read"
|
scopes: "read"
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
@@ -27,13 +27,13 @@ class OauthMobileTest < ActionDispatch::IntegrationTest
|
|||||||
|
|
||||||
# Check that Turbo is disabled in the form
|
# Check that Turbo is disabled in the form
|
||||||
assert_match(/data-turbo="false"/, response.body)
|
assert_match(/data-turbo="false"/, response.body)
|
||||||
assert_match(/maybeapp:\/\/oauth\/callback/, response.body)
|
assert_match(/sureapp:\/\/oauth\/callback/, response.body)
|
||||||
end
|
end
|
||||||
|
|
||||||
test "mobile oauth detects custom scheme in redirect_uri" do
|
test "mobile oauth detects custom scheme in redirect_uri" do
|
||||||
get "/oauth/authorize", params: {
|
get "/oauth/authorize", params: {
|
||||||
client_id: @oauth_app.uid,
|
client_id: @oauth_app.uid,
|
||||||
redirect_uri: "maybeapp://oauth/callback",
|
redirect_uri: "sureapp://oauth/callback",
|
||||||
response_type: "code",
|
response_type: "code",
|
||||||
scope: "read"
|
scope: "read"
|
||||||
}
|
}
|
||||||
@@ -55,7 +55,7 @@ class OauthMobileTest < ActionDispatch::IntegrationTest
|
|||||||
|
|
||||||
# Should redirect to the custom scheme
|
# Should redirect to the custom scheme
|
||||||
assert_response :redirect
|
assert_response :redirect
|
||||||
assert response.location.start_with?("maybeapp://oauth/callback")
|
assert response.location.start_with?("sureapp://oauth/callback")
|
||||||
end
|
end
|
||||||
|
|
||||||
test "mobile oauth preserves display parameter through forms" do
|
test "mobile oauth preserves display parameter through forms" do
|
||||||
|
|||||||
@@ -114,13 +114,13 @@ http_interactions:
|
|||||||
"postal_code": "12345",
|
"postal_code": "12345",
|
||||||
"state": null
|
"state": null
|
||||||
},
|
},
|
||||||
"email": "user@maybe.local",
|
"email": "user@sure.local",
|
||||||
"name": "Test Checkout User",
|
"name": "Test Checkout User",
|
||||||
"phone": null,
|
"phone": null,
|
||||||
"tax_exempt": "none",
|
"tax_exempt": "none",
|
||||||
"tax_ids": []
|
"tax_ids": []
|
||||||
},
|
},
|
||||||
"customer_email": "user@maybe.local",
|
"customer_email": "user@sure.local",
|
||||||
"discounts": [],
|
"discounts": [],
|
||||||
"expires_at": 1746368350,
|
"expires_at": 1746368350,
|
||||||
"invoice": "in_1RKguoQT2jbOS8G0PuBVklxw",
|
"invoice": "in_1RKguoQT2jbOS8G0PuBVklxw",
|
||||||
|
|||||||