Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
75185ba
Initial commit
Vinyzu Aug 6, 2025
ab2ec24
Initial Setup
Vinyzu Aug 6, 2025
b21c791
Initial Setup (#1)
Vinyzu Aug 6, 2025
eddf031
Add Code Review Enforcement
Vinyzu Aug 6, 2025
5e6db04
Add comment to Pull Request to show Approval is needed
Vinyzu Aug 6, 2025
83a6006
Make Sure Message is sent if Workflow fails
Vinyzu Aug 6, 2025
905e1bf
Merge branch 'main' into setup
Vinyzu Aug 6, 2025
b3c8397
Make Sure Action is executed
Vinyzu Aug 6, 2025
b07dcdd
Merge branch 'setup' of https://github.com/WittyWisterias/WittyWister…
Vinyzu Aug 6, 2025
e4c0bb6
Fail the workflow to make sure Merging is blocked
Vinyzu Aug 6, 2025
cf6d1db
Improve Approval Checking
Vinyzu Aug 7, 2025
48e625b
Move to actions/github-script to Delete Comment
Vinyzu Aug 7, 2025
fb36d95
Improve Approval Handling
Vinyzu Aug 7, 2025
e057513
Add Code Review Enforcement (#2)
Vinyzu Aug 7, 2025
ecc7f10
Add Image Encoding Functionality
Vinyzu Aug 9, 2025
ca14f3b
Add Functionality to Upload Images/Data to Hoster
Vinyzu Aug 9, 2025
3f5fee9
Add Query to search for latest Data in
Vinyzu Aug 9, 2025
91e3d33
Move from Base64 to String Encoding
Vinyzu Aug 9, 2025
f799b00
Fix Review Workflow so merging is possible after review
Vinyzu Aug 9, 2025
5dd0eba
Add full Database functionality (#10)
Vinyzu Aug 9, 2025
560f2ac
Create format.py
pedro-alvesjr Aug 10, 2025
07fb090
Improve Database Data Handling
Vinyzu Aug 10, 2025
4139f09
Fix Formatting/Linting
Vinyzu Aug 10, 2025
c620c74
Add EventType Typing System
Vinyzu Aug 10, 2025
30cc6fd
make the urls constants, and add NoReturn to the functions that raise…
erri4 Aug 10, 2025
ba0e185
passed ruff checks and mypy checks, turns out NoReturn should only be…
erri4 Aug 10, 2025
62c25d8
make the urls constants
erri4 Aug 10, 2025
65b257c
Merge branch 'main' into Vinyzu/Database
Vinyzu Aug 11, 2025
7f9aaf2
Adjust to Main Branch
Vinyzu Aug 11, 2025
623d64c
Create Cryptography Functionality
Vinyzu Aug 11, 2025
3ac326c
implemented skeleton for frontend chat
bensgilbert Aug 11, 2025
ad86f1b
add send image dialog
bensgilbert Aug 11, 2025
dd8a9ef
Frontend Overhaul
Vinyzu Aug 11, 2025
da54a87
Apply Some Styling
Vinyzu Aug 11, 2025
9312329
Add Message Bubbles
Vinyzu Aug 11, 2025
433905c
Forgot to push ChatState
Vinyzu Aug 12, 2025
cda0fdd
Improve Database Data Handling (#12)
Vinyzu Aug 12, 2025
e6cf4ba
Fix Linting
Vinyzu Aug 12, 2025
82aba65
Delete Stop Signal
Vinyzu Aug 12, 2025
4fc9216
[Backend] Establish EventFormat (#11)
Vinyzu Aug 12, 2025
47f4a0c
Merge branch 'main' into frontend
Vinyzu Aug 13, 2025
576689e
Create basic Chat Frontend (#20)
Vinyzu Aug 13, 2025
9153648
Rename Cryptography to Cryptographer to avoid Naming Issues
Vinyzu Aug 13, 2025
71d6ab4
Merge branch 'main' into Vinyzu/Cryptography
Vinyzu Aug 13, 2025
5a5ac3b
Implement Sending Public Text Messages
Vinyzu Aug 13, 2025
64a53ef
Create Cryptography Functionality (#15)
Vinyzu Aug 13, 2025
62e5454
Add Public Chat Message Signing
Vinyzu Aug 13, 2025
5d98914
Implement Sending Public Text Messages (#21)
Vinyzu Aug 14, 2025
71e1fc8
Implement Public Image Messages
Vinyzu Aug 14, 2025
adb83fd
Add Message Progress
Vinyzu Aug 14, 2025
bfe172b
Move to one Private Key and Spawn them on Startup
Vinyzu Aug 14, 2025
2e7e043
Implement Tos Accept Screen
Vinyzu Aug 14, 2025
a4d313e
Update Sidebar User Info
Vinyzu Aug 14, 2025
507ceac
Create User Input Handlers
Vinyzu Aug 14, 2025
8a3ead6
Create User Input Handlers (#22)
Vinyzu Aug 15, 2025
b7adb2d
Implement Private Messages
Vinyzu Aug 15, 2025
11019bb
Add User Information Editor
Vinyzu Aug 15, 2025
707e979
Frontend Sync (#23)
Vinyzu Aug 16, 2025
d272f7b
Refractoring, Styling and Documentation
Vinyzu Aug 17, 2025
4f96ad0
Bug Fixes
Vinyzu Aug 17, 2025
c3f8a13
Delete modules/
Vinyzu Aug 18, 2025
84c6efc
Refractoring, Styling and Documentation (#25)
Vinyzu Aug 18, 2025
541f2bc
Implement UserInput Modules in Frontend
Vinyzu Aug 18, 2025
26451d6
Fix Missing Import and Reflex Warnings
Vinyzu Aug 18, 2025
af1cbe8
Rename to "ShitChat"
Vinyzu Aug 18, 2025
62ecf50
Move from /src/witty_wisterias/ to /witty_wisterias/
Vinyzu Aug 18, 2025
4192096
Fix Linting
Vinyzu Aug 18, 2025
4606ce2
Move from Threading to run_in_executor
Vinyzu Aug 18, 2025
e319b89
Update Requirements
Vinyzu Aug 18, 2025
7d8ac51
Ensure User is Logged In to Check Messages
Vinyzu Aug 18, 2025
d43532d
Some more formatting
Vinyzu Aug 18, 2025
90795df
Implement UserInput Modules in Frontend and Sync (#26)
Vinyzu Aug 18, 2025
359e8f0
Readme Text Documentation
Vinyzu Aug 19, 2025
cc5b0ea
Readme Media Documentation
Vinyzu Aug 19, 2025
57beb23
Project Documentation (#27)
Vinyzu Aug 19, 2025
acc9504
Add 'witty-wisterias/' from commit '57beb23d1ab84c92628ada2b84739262c…
janine9vn Sep 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions witty-wisterias/.github/workflows/lint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# GitHub Action workflow enforcing our code style.

name: Lint

# Trigger the workflow on both push (to the main repository, on the main branch)
# and pull requests (against the main repository, but from any repo, from any branch).
on:
push:
branches:
- main
pull_request:

# Brand new concurrency setting! This ensures that not more than one run can be triggered for the same commit.
# It is useful for pull requests coming from the main repository since both triggers will match.
concurrency: lint-${{ github.sha }}

jobs:
lint:
runs-on: ubuntu-latest

env:
# The Python version your project uses. Feel free to change this if required.
PYTHON_VERSION: "3.12"

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

- name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}

- name: Run pre-commit hooks
uses: pre-commit/[email protected]
89 changes: 89 additions & 0 deletions witty-wisterias/.github/workflows/review.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
name: 🛡️ Require one Pull Request Approval

on:
pull_request:
branches:
- main
types: [opened, synchronize, reopened, ready_for_review]
pull_request_review:
# Also recheck when a review is submitted to automatically allow merging
types: [submitted]

concurrency: # Make sure only one approval check runs at a time for the same PR, so the pull_request workflow doesnt fail after a review is submitted
group: approval-check-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
approval-check:
name: "​" # NOTE: Were using a zero-width space to save some visual clutter in the GitHub Pull Request UI
if: github.event.pull_request.draft == false # Only run if the PR is not a draft

runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
pull-requests: write

steps:
- name: Require approval from at least one reviewer
id: approval_check
uses: peternied/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
required-approvers-list: "bensgilbert,erri4,pedro-alvesjr,Tails5000,Vinyzu" # GitHub username is case-sensitive
min-required: 1
continue-on-error: true

- name: Set approval flag # This is a workarround because peternied/required-approval's output do not work, so we are checking the stdout
id: set_approved_flag
run: |
echo "approved=$(echo '${{ steps.approval_check.outcome }}' | grep -q 'success' && echo 'yes' || echo 'no')" >> $GITHUB_OUTPUT

- name: Add reminder comment if approval is missing # Checking if approval comment was already posted
if: steps.set_approved_flag.outputs.approved == 'no'
id: find_comment_missing
uses: peter-evans/find-comment@v3
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: github-actions[bot]
body-includes: "Waiting for at least one more approval"

- name: Add reminder comment if missing # Add approval comment if it was not posted yet
if: steps.set_approved_flag.outputs.approved == 'no' && steps.find_comment_missing.outputs.comment-id == ''
uses: peter-evans/create-or-update-comment@v4
with:
issue-number: ${{ github.event.pull_request.number }}
body: |
⏳ **Waiting for at least one more approval** from:
- @bensgilbert
- @erri4
- @pedro-alvesjr
- @tails5000
- @vinyzu

- name: Delete reminder comment if approval is now present # Find approval comment if it was posted
if: steps.set_approved_flag.outputs.approved == 'yes'
id: find_comment_present
uses: peter-evans/find-comment@v3
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: github-actions[bot]
body-includes: "Waiting for at least one more approval"

- name: Delete reminder comment if approval is now present # Delete approval comment if it was posted and approval is now present
if: steps.find_comment_present.outputs.comment-id != ''
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
await github.rest.issues.deleteComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: parseInt("${{ steps.find_comment_present.outputs.comment-id }}", 10)
});

- name: Fail workflow if approval is missing # Fail the workflow if approval is still missing
if: steps.set_approved_flag.outputs.approved == 'no'
run: |
echo "❌ Approval missing: at least one of the required users must approve."
exit 1
214 changes: 214 additions & 0 deletions witty-wisterias/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,214 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[codz]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py.cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# UV
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
#uv.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock
#poetry.toml

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
#pdm.lock
#pdm.toml
.pdm-python
.pdm-build/

# pixi
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
#pixi.lock
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
# in the .venv directory. It is recommended not to include this directory in version control.
.pixi

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.envrc
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
.idea/

# Abstra
# Abstra is an AI-powered process automation framework.
# Ignore directories containing user credentials, local state, and settings.
# Learn more at https://abstra.io/docs
.abstra/

# Visual Studio Code
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
# and can be added to the global gitignore or merged into this file. However, if you prefer,
# you could uncomment the following to ignore the entire vscode folder
.vscode/

# Ruff stuff:
.ruff_cache/

# PyPI configuration file
.pypirc

# Cursor
# Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
# exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
# refer to https://docs.cursor.com/context/ignore-files
.cursorignore
.cursorindexingignore

# Marimo
marimo/_static/
marimo/_lsp/
__marimo__/

# DS Store (macOS)
.DS_Store

# Reflex
.web
.states
38 changes: 38 additions & 0 deletions witty-wisterias/.pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Pre-commit configuration.
# See https://github.com/python-discord/code-jam-template/tree/main#pre-commit-run-linting-before-committing

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: check-added-large-files
- id: check-ast
- id: check-case-conflict
- id: check-docstring-first
- id: check-illegal-windows-names
- id: check-json
- id: check-toml
- id: check-yaml
- id: end-of-file-fixer
- id: trailing-whitespace
args: [--markdown-linebreak-ext=md]
- id: pretty-format-json
args: [--autofix]

- repo: https://github.com/asottile/pyupgrade
rev: v3.20.0
hooks:
- id: pyupgrade

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.12.7
hooks:
- id: ruff-check
args: [--fix]
- id: ruff-format

- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.17.1
hooks:
- id: mypy
additional_dependencies: ['types-requests']
Loading