11 Commits

Author SHA1 Message Date
fa87a0b32f TASK-056: edge-swipe outline, resizable pair, tree-based directory listing
- Code viewer: the outline opens with a swipe from the left edge and closes
  with a swipe left, with one pane or two.
- Side-by-side .h/.cpp: a draggable handle resizes the panes (20% to 80%).
- Directory listing reads Git tree objects instead of the contents endpoint,
  which looked up the last commit of every entry.
- A listing that needs more than one request shows percent and count.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-28 15:29:10 +09:00
9046985ba4 TASK-055: first device feedback on the redesign
Repository names get a line to themselves; the repository, work and notification tabs lose their title; a today count on Home opens today's activity of that kind; the outline is a foldable tree of classes and methods without fields; Home can show only starred repositories and remembers the choice; settings has a light/dark/system theme choice.

Whether the app is dark is now the app's decision (UBGiteaTheme.isDark), so the logo moved off a -night drawable. 420 unit tests pass, lint reports 0 errors. Installed on the product owner's Z Fold7.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-28 15:09:39 +09:00
d1a45abc16 TASK-050..054: tabs, Home, Work, code viewer, C++ pairs, fold layouts
Four tabs in an app shell that becomes a rail from 600dp, a brighter sky-blue palette with the real UbiSam logo, a Home tab built on Gitea's activity feeds, a Work tab that searches issues and pull requests across repositories, a full-screen code viewer with search, outline and Visual Studio colors, C/C++ header/source pairing, and two-pane layouts for wide windows.

The five tasks were built and checked together, so they are one commit: MainActivity, the routes and the shared components belong to all of them. 409 unit tests pass, lint reports 0 errors. Verified on an emulator up to the sign-in screen only; no physical device was available.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-28 14:35:00 +09:00
d9536289e9 TASK-048: source viewer line numbers, syntax highlighting, word wrap
Includes the two same-day follow-ups that fixed horizontal scrolling. See tasks/048-code-viewer-readability.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-28 13:17:33 +09:00
9e4cbe3e89 TASK-035: remove redundant per-file Commit button from the code browser
The header's 'Commit' button (onViewHistory) just switched
BranchDetailScreen's pager to page 1 -- the exact same action the
top-level 'Commit' tab's own onClick already performs. No path/file
info ever flowed through it, so it was never actually file-specific
history, just a duplicate shortcut that TASK-031's rename made obvious.
Removed the button, its parameter threading, and the now-unused
codebrowser_history string.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-29 16:55:21 +09:00
c75b348d08 TASK-031: rename History label to Commit, EUC-KR decode fallback, HTTP timeout fix
- '히스토리' label -> '커밋' across the branch-detail tab, code-browser
  history button, and the one permission-denied sentence that used the
  word, matching what that screen actually shows.
- SourceContentClassifier now tries EUC-KR (strictly, same discipline as
  its existing UTF-8 attempt) before giving up, so legacy Korean-encoded
  .cpp/.h source files render instead of failing as UnsupportedEncoding.
  A byte sequence invalid in both charsets still correctly falls through.
- OkHttpTransport's default client is now one shared, longer-timeout
  OkHttpClient (15s/30s/15s) instead of a fresh unconfigured OkHttpClient()
  per call site -- fixes a large commit history/directory listing on this
  app's home-NAS-hosted Gitea being misreported as offline purely because
  it took longer than the previous 10s default to answer, and lets calls
  to the same host reuse one connection pool instead of ~8 separate ones.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-27 23:25:23 +09:00
bb83c215d3 TASK-027 follow-up: PDF viewer with swipe/pinch-zoom, reusing image gesture code
Opening a .pdf file (detected by %PDF- magic bytes) now renders its pages via
Android's built-in PdfRenderer -- no new dependency -- with the same
swipe-between-pages, pinch-zoom, pan, and double-tap-to-toggle-zoom
interaction as the image viewer. The shared gesture logic was extracted into
a ZoomableSwipeableBox composable so it's genuinely reused, not duplicated.
maxInputBytes raised 1MB -> 10MB so real-world photos and PDFs aren't
rejected as Oversized before ever being classified.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-27 22:22:21 +09:00
2818dab09a TASK-027/028: image+CSV viewer with gallery swipe, numbered Issues/PR pagination
TASK-027: opening an image (PNG/JPEG/GIF/BMP/WebP, detected by magic bytes)
now decodes and shows it, with swipe navigation to the previous/next image
in the same folder; opening a .csv file shows a scrollable table instead of
raw text. Both reuse the tab-swipe/content-scroll gesture-conflict fix so
neither ever triggers the Files/History tab to change underneath it.

TASK-028: the Issues/PR list shows up to 5 numbered page buttons plus a
[ page / total ] jump field, backed by Gitea's X-Total-Count header
(verified against Gitea's own source) and a server-side type=issues filter
so the count excludes pull requests. Every other paginated list is
unchanged, per this session's earlier scoping decision.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-27 21:50:24 +09:00
8cf7acd9ac TASK-025: tabbed branch detail screen, repo commit time, swipeable tabs, and live-testing follow-up fixes
- Branch/tag tap opens one screen with swipeable Files/History tabs (Route.BranchDetail replaces Route.CodeBrowser/Route.History)
- Repository rows show last-commit time; repository All/Favorites tabs are swipeable
- Fix overlapping commit-detail layout (BoxWithConstraints sibling stacking)
- Fix BranchDetailScreen tab row jammed against status bar
- Fix diff view horizontal scroll not working
- Simplify references-loading message; remove in-app back buttons in favor of system back gesture; replace manual refresh buttons with pull-to-refresh

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-27 01:39:17 +09:00
429668bf26 Implement TASK-007: commit history and change viewer UI
Paginated commit history for the current ref, commit detail with
distinguished added/modified/deleted/renamed file status, bounded and
explicitly-truncated patch text, and a ref comparison flow validating
one entered ref against the currently open ref as base.

Reuses TASK-004's listCommits and this session's own TASK-009
HistoryRepository; no shared/domain file touched. Entry point is a new
history button on the existing code browser header.

Self-review caught and fixed a bug before writing tests: a failed
commit-detail fetch discarded which commit had failed, so retry
silently reloaded the whole list instead of re-fetching the commit the
user tried to open.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-26 14:56:43 +09:00
16c46a5c54 feat: browse repository source by ref 2026-08-26 10:35:20 +09:00