Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
7b8fe83
fix: broken refresh in mobile app
raaymax Dec 10, 2025
bda36aa
fix: dev environment and mobile search issues (#237)
raaymax Jan 31, 2026
c9438cd
refactor(atoms): convert atoms to presentational components (#238)
raaymax Jan 31, 2026
f0b0dcc
chore(tmux): improve dev environment script layout (#239)
raaymax Jan 31, 2026
e47c15b
fix(storybook): resolve molecules layer rendering issues (#240)
raaymax Feb 1, 2026
0491251
feat(mobile): add Capacitor Android app with SSE notifications (#242)
raaymax Feb 2, 2026
4801f3f
fix(mobile): transform localhost to 10.0.2.2 for Android emulator
raaymax Feb 2, 2026
0c2a907
feat(ssl): auto-detect local IPs for certificate generation
raaymax Feb 2, 2026
6a3c117
chore: add pre-commit hook to enforce /commit command
raaymax Feb 4, 2026
290e412
chore: revert git pre-commit hook, add project settings (#245)
raaymax Feb 5, 2026
184d5af
chore(deps): consolidated dependency updates (#244)
raaymax Feb 5, 2026
6f0a9f0
chore(mobile): upgrade to Capacitor 8 (#246)
raaymax Feb 5, 2026
cfef7e1
feat(channels): add channel creation modal with description support (…
raaymax Feb 6, 2026
ec79d09
chore(storybook): clean up config and centralize styles import (#249)
raaymax Feb 6, 2026
f9188cd
chore(storybook): standardize atom stories with titles, argTypes, and…
raaymax Feb 6, 2026
f4789a0
chore(storybook): standardize molecule, organism, and page stories (#…
raaymax Feb 6, 2026
1ace864
fix(storybook): add loader for Input organism story
raaymax Feb 6, 2026
703e115
fix(storybook): add container wrapper for Input organism story
raaymax Feb 6, 2026
bd72057
fix(emoji): cache Fuse instance to prevent infinite render loop (#252)
raaymax Feb 6, 2026
d823523
chore(storybook): add missing component stories
raaymax Feb 6, 2026
cbb6328
fix(storybook): mock image URLs in Message story
raaymax Feb 6, 2026
0e77526
chore(deps): update npm packages and align deno versions
raaymax Feb 6, 2026
3bf55ef
docs(architecture): add system architecture, conventions, and ADRs
raaymax Feb 6, 2026
1a442cb
refactor(components): improve atomic design structure
raaymax Feb 7, 2026
06499ec
refactor(components): extract SearchBoxInput atom, MessageInfo molecu…
raaymax Feb 7, 2026
85be831
Merge pull request #260 from raaymax/refactor/atomic-design-phase2
raaymax Feb 8, 2026
61fd4e4
chore: add CLAUDE.md with project guidance and git workflow rules
raaymax Feb 8, 2026
003e93c
docs(adr): add ADR 014 repository pattern over ORM (#258)
raaymax Feb 8, 2026
794fcd3
docs: add project backlog with cleanup and refactoring tracker (#262)
raaymax Feb 8, 2026
fd62d5b
chore(lint): add frontend eslint with atomic design rules and CI inte…
raaymax Feb 8, 2026
706aed0
chore(deps): update valibot from 0.31.1 to 1.1.0 (#263)
raaymax Feb 8, 2026
0c9cdc8
fix: prevent blank screen when navigating to non-existent channels (#…
raaymax Feb 8, 2026
9c534af
fix: prevent screen blink when switching channels (#265)
raaymax Feb 8, 2026
6e2a3c9
ci: automate release on PR merge with version label (#266)
raaymax Feb 8, 2026
d2a8fdf
Merge branch 'main' into dev
raaymax Feb 8, 2026
a001298
chore(docker): update deno from 2.5.0 to 2.6.8 (#267)
raaymax Feb 8, 2026
c29a814
fix(docker): resolve arm64 apk failures with deno alpine image (#268)
raaymax Feb 9, 2026
d61b9cb
fix(docker): remove deno glibc libs that break apk triggers (#269)
raaymax Feb 9, 2026
473a58f
fix(docker): move deno libs aside during apk install (#270)
raaymax Feb 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 15 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "bash -c 'INPUT=$(cat); if echo \"$INPUT\" | grep -qE \"CLAUDE_COMMIT=1\"; then exit 0; fi; if echo \"$INPUT\" | grep -qE \"git commit\"; then echo \"Use /commit instead of git commit directly\" >&2; exit 2; fi'"
}
]
}
]
}
}
8 changes: 8 additions & 0 deletions .github/workflows/dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ name: Create dev Docker image
on:
pull_request:
branches: [ main ]
workflow_dispatch:

env:
REGISTRY: ghcr.io
Expand Down Expand Up @@ -34,6 +35,12 @@ jobs:
with:
deno-version: '2.x'
- run: deno install --allow-scripts
- name: Install frontend dependencies
working-directory: app
run: npm ci
- name: Frontend lint
working-directory: app
run: npm run lint
- run: deno task migrate:tests
- run: deno task check

Expand Down Expand Up @@ -84,6 +91,7 @@ jobs:
- run: echo '```\n${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:build-${{ github.run_number }}\n```\n' >> $GITHUB_STEP_SUMMARY

- uses: actions/github-script@v7
if: github.event_name == 'pull_request'
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
Expand Down
49 changes: 49 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Create release from merged PR

on:
pull_request:
types: [closed]
branches: [main]

jobs:
release:
if: github.event.pull_request.merged == true && contains(join(github.event.pull_request.labels.*.name, ','), 'v')
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Extract version from labels
id: version
uses: actions/github-script@v7
with:
result-encoding: string
script: |
const labels = context.payload.pull_request.labels;
const versionLabel = labels.find(l => /^v\d+\.\d+\.\d+$/.test(l.name));
if (!versionLabel) {
core.setFailed('No version label (vX.Y.Z) found on PR');
return;
}
core.info(`Found version: ${versionLabel.name}`);
return versionLabel.name;

- name: Create GitHub Release
uses: actions/github-script@v7
with:
script: |
const version = '${{ steps.version.outputs.result }}';
const pr = context.payload.pull_request;

await github.rest.repos.createRelease({
owner: context.repo.owner,
repo: context.repo.repo,
tag_name: version,
target_commitish: 'main',
name: version,
body: pr.body || `Release ${version}`,
draft: false,
prerelease: false,
});

core.info(`Created release ${version}`);
6 changes: 6 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,11 @@ jobs:
with:
deno-version: '2.x'
- run: deno install --allow-scripts
- name: Install frontend dependencies
working-directory: app
run: npm ci
- name: Frontend lint
working-directory: app
run: npm run lint
- run: deno task migrate:tests
- run: deno task check
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@ todo.txt
tsconfig.tsbuildinfo
/ssl
temp/

# Android build artifacts
mobile/android/**/build/
99 changes: 99 additions & 0 deletions .planning/pr-full/FINAL-REPORT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# PR Full Workflow Report

**PR:** #251 - chore(storybook): standardize molecule, organism, and page stories
**URL:** https://github.com/raaymax/quack/pull/251
**Branch:** chore-storybook-molecules
**Generated:** 2026-02-06

---

## Summary

| Metric | Value |
|--------|-------|
| Commits | 1 |
| Files Changed | 28 |
| Additions | +600 |
| Deletions | -28 |
| Review Cycles | 1 |
| Issues Fixed | 0 |
| CI Status | PASS |

---

## Workflow Phases

| Phase | Status | Notes |
|-------|--------|-------|
| 1. Commit | ✓ | b6c2d337 |
| 2. Create PR | ✓ | #251 |
| 3. Initial Review | ✓ | 0 issues found |
| 4. Fix Issues | ✓ | No fixes needed |
| 5. CI Verify (1st) | ✓ | All tests passed |
| 6. Refactor | ✓ | No refactoring needed |
| 7. CI Verify (2nd) | ✓ | Skipped (no changes) |
| 8. Final Review | ✓ | Code quality verified |
| 9. PR Fix | ✓ | No cleanup needed |

---

## CI Checks

| Check | Status |
|-------|--------|
| tests | ✓ PASS |

---

## Code Quality Assessment

**Strengths:**
- Consistent pattern across all 28 story files
- Clear, descriptive argTypes with helpful descriptions
- Meaningful story variants covering common use cases
- Proper use of Storybook's fullscreen layout for page stories
- Smart use of InlineChannel for NavChannel stories to avoid context dependencies

**Areas Reviewed:**
- [x] Type safety - N/A (config files only)
- [x] Error handling - N/A
- [x] Performance - N/A
- [x] Security - N/A
- [x] Test coverage - N/A (not applicable to story files)
- [x] Code organization - Clean and consistent

---

## Changes Summary

**Molecules (22 files):**
- Attachments, ButtonWithEmoji, ButtonWithIcon, ChannelLink, DiscussionHeader
- Emoji, Files, LoadingIndicator, LoggedUser, MessageBody
- MessageToolbar, NavButton, NavChannel, NavChannels, NavUsers
- Reactions, ReadReceipt, TextMenu, TextWithIcon, ThreadInfo
- ThreadLink, UserMention

**Organisms (3 files):**
- EmojiSearch, Input, Message

**Pages (3 files):**
- ErrorPage, LoginPage, RegistrationPage

---

## Outstanding Items

None - all story files standardized successfully.

---

## Recommendation

**READY_TO_MERGE**

This PR completes the Storybook story standardization effort. All 28 story files now have:
- Explicit titles for proper navigation
- argTypes with controls and descriptions for interactive editing
- Multiple story variants for comprehensive component documentation

CI checks pass and the code follows established patterns from previous PRs.
Loading